การสื่อสารระหว่างเบราว์เซอร์และแอปพลิเคชันดั้งเดิมอย่างปลอดภัย


12

ฉันกำลังทำงานกับเว็บแอปพลิเคชันที่ต้องการข้อมูลที่สามารถรับได้จากเบราว์เซอร์แอปพลิเคชันดั้งเดิมที่ติดตั้งในเครื่องเท่านั้น

คุณจะไปรอบ ๆ แซนด์บ็อกซ์ของเบราว์เซอร์ได้อย่างไรเพื่อให้คุณสามารถสื่อสาร (ปลอดภัยเนื่องจากข้อมูลอาจอ่อนไหว) ด้วยแอปพลิเคชันดั้งเดิม

ในตัวอย่างเดียวที่ฉันพบผู้ใช้ย้ายโทเค็นและไฟล์บางอย่างด้วยตนเองระหว่างสองซึ่งเป็นประสบการณ์ผู้ใช้ที่น่ากลัวที่ฉันต้องการหลีกเลี่ยง


1
คุณอาจสามารถรับวิธีแก้ปัญหาบางอย่างที่แอปพลิเคชันเนทีฟมีเว็บเซิร์ฟเวอร์ขนาดเล็กที่ทำงานบน localhost
amon

ฉันกำลังคิดว่าเช่นกัน ... ฉันมีข้อกังวลที่คลุมเครือซึ่งจะไม่ "กังวล" วันนี้มีตัวอย่างของแอปพลิเคชันที่ทำเช่นนี้หรือไม่? (เขียนคำตอบนี้แล้วคุณอาจได้คะแนน)
Zak Kus

เบราว์เซอร์ที่ฝังตัวจะดีที่สุด ฝังเบราว์เซอร์ในแอพและตั้งโปรแกรมการโต้ตอบของคุณตามต้องการ
GregJava

คำตอบ:


7

คุณสามารถฝังเว็บเซิร์ฟเวอร์ในแอปพลิเคชันเนทีฟจากนั้นไคลเอ็นต์ของคุณสามารถโทรไปยังลิงค์ที่มีรหัสตายตัวเพื่อhttp: // localhost / xyz (คุณอาจต้องกังวลเกี่ยวกับคำเตือนการเขียนสคริปต์ข้ามไซต์ที่นี่และ / หรือเรียกใช้เซิร์ฟเวอร์ บนพอร์ตที่ไม่ใช่ http) หากคุณใช้เว็บซ็อกเก็ตแอปพลิเคชันดั้งเดิมของคุณยังสามารถส่งข้อมูลไปยังเว็บเบราว์เซอร์ได้เมื่อเบราว์เซอร์เริ่มทำการสื่อสาร

ฉันทำด้วยตนเองในพื้นที่ตัวควบคุมเว็บเบราว์เซอร์แบบฝังตัวร้องขอข้อมูลการสร้างภาพจากเว็บเซิร์ฟเวอร์ที่กำหนดเองและเมื่อฉันพัฒนาฉันเรียกใช้ทั้งสองบนพีซีเครื่องเดียวกัน

มี webservers แบบฝังตัวเล็ก ๆ และมีประสิทธิภาพมากมายสำหรับ C / C ++ (Mongoose, NxWeb, civetweb ฯลฯ ), C # มักจะใช้เซิร์ฟเวอร์ WCF แบบเต็ม python มาพร้อมกับ webserver เล็กน้อยใน IIRC


ฉันทำงานกับวิธีแก้ปัญหาเช่นนี้ แต่มีปัญหาบางอย่างเมื่อเบราว์เซอร์พยายามเชื่อมต่อผ่าน websocket จากหน้าเว็บจากโดเมนอินเทอร์เน็ต (www.mydomain.com) กับเซิร์ฟเวอร์ localhost websocket เป็นพิเศษหากหน้าเว็บนั้นแสดงด้วย HTTPS ต้องการเซิร์ฟเวอร์ websocket เพื่อกำหนดค่าให้ใช้ wss (WebSocket กับ SSL) หากคุณใช้ใบรับรองที่ลงชื่อด้วยตนเองเพื่อ "ปลอดภัย" เซิร์ฟเวอร์ websocket เบราว์เซอร์จะไม่ชอบการเชื่อมต่อ websocket ของคุณ Firefox จะอนุญาตเมื่อคุณยอมรับใบรับรองท้องถิ่นที่ไม่ปลอดภัย แต่เบราว์เซอร์อื่น ๆ จะไม่ยอมให้คุณเชื่อมต่อได้ง่าย
David

1
สำหรับ c # วันนี้เว็บเซิร์ฟเวอร์แบบฝังที่ดีที่สุดน่าจะเป็นโฮสต์ของตัวเอง
Esben Skov Pedersen

8

มีสองวิธีที่คุณสามารถปะปนกับแอปเนทีฟและแอปเบราว์เซอร์

คุณสามารถฝังเบราว์เซอร์ในแอพเนทีฟเหมือนแอพ PhoneGap ทำบนมือถือ ที่จะช่วยให้คุณสามารถขยายเครื่องมือจาวาสคริปต์ของเบราว์เซอร์และช่วยให้คุณสามารถโทรระหว่างสอง

หรือคิดทบทวนสถาปัตยกรรมของคุณอีกครั้ง มีทั้งแอพพลิเคชั่นพื้นฐานและแอพพลิเคชั่นที่ใช้เบราว์เซอร์ใช้เซิร์ฟเวอร์เป็นตัวเลือก ดังนั้นทั้งเบราว์เซอร์และแอปพลิเคชันเนทีฟจึงพูดคุยกับเว็บเซิร์ฟเวอร์เท่านั้นซึ่งจะส่งต่อข้อมูลระหว่างทั้งสองเท่าที่จำเป็น

หรือถ้าคุณต้องการฟังก์ชั่นเนทีฟ ... เพียงแค่สร้างแอปพลิเคชั่นดั้งเดิม

ฉันไม่แนะนำวิธี 'โลคอลเว็บเซิร์ฟเวอร์' สำหรับสิ่งอื่น ๆ นอกเหนือจากแอปพลิเคชันที่ทำงานในสภาพแวดล้อมที่มีการควบคุม หากซอฟต์แวร์ของคุณมีจุดประสงค์เพื่อติดตั้งและเรียกใช้บนเครื่องผู้ใช้ปลายทางที่มีข้อกำหนดการสนับสนุนเพียงเล็กน้อยคุณจะพบว่าตัวเองกำลังเผชิญกับปัญหาไฟร์วอลล์และซอฟต์แวร์ป้องกันไวรัส


ข้อมูลที่ฉันต้องการจากแอปเนทีฟนั้นเปิดอยู่ว่าเครื่องนั้น (แทนที่จะเป็นผู้ใช้) เป็นที่ยอมรับหรือไม่ หากคุณใช้เว็บเซิร์ฟเวอร์ปกติระหว่างเดินทางคุณสามารถแน่ใจได้หรือไม่ว่าเครื่องที่เบราว์เซอร์เปิดอยู่นั้นเป็นแอพเดียวที่ประเมินโดยแอปพื้นฐาน นอกจากนี้เห็นด้วยอย่างสมบูรณ์ shoudl ไม่มีสองไม่มีเหตุผลที่ดี แต่เรามีเหตุผลของเรา ^ _ ^
Zak Kus

นอกจากนี้ยังไม่ชัดเจนสำหรับฉันว่าการฝังเบราว์เซอร์ในแอพแบบดั้งเดิมจะช่วยให้การสื่อสารระหว่างเบราว์เซอร์และแอปดั้งเดิมนั้นได้อย่างไร
Zak Kus

@Zak อย่างที่บอกไปแล้วว่าคุณสามารถขยายเอ็นจิ้น javascript เพื่อให้พวกเขาคุยกันได้อย่างที่ PhoneGap ทำในแอพมือถือ คุณจะกำหนดวิธีการที่สามารถเรียกใช้โดยจาวาสคริปต์บนหน้าซึ่งดำเนินการโดยแอพเนทีฟหรือเรียกใช้จาวาสคริปต์จากฟังก์ชั่นแอพเนทีฟ
GrandmasterB

ฉันคิดว่าการใช้เบราว์เซอร์ในตัวจะเป็นวิธีที่ดีที่สุดในการตรวจสอบให้แน่ใจว่าเบราว์เซอร์นั้นทำงานบนเครื่องที่จำเป็นต้องเปิดใช้งาน
GrandmasterB

ในทางเทคนิคแล้วฉันยอมรับว่าแอพเนทีฟที่มีมุมมองเว็บเป็นวิธีที่ง่ายที่สุด อย่างไรก็ตามตามบทความภาษาเยอรมันจาก heise online android web-viewer สำหรับ android 4.3 และด้านล่างมีปัญหาด้านความปลอดภัยที่ร้ายแรงซึ่งไม่สามารถแก้ไขได้
k3b
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.