簡體   English   中英

跨域請求到localhost

[英]Cross Domain Request to localhost

免責聲明:我已經看過各種方法來解決我的問題,所以請在將此標記為重復的問題之前閱讀

我在https://xyz.com上運行了一個javascript,它必須從運行在用戶本地計算機上的應用程序ABC檢索信息,例如端口8080。

我的約束是我無法修改從ABC發出的HTTP標頭,也不希望用戶安裝另一個應用程序,它將把我的請求路由到ABC

跨域/窗口消息傳遞選項

a) window.postMessage:由於我無法在本地計算機上運行腳本而被排除在外
b) XDR對象(IE)或Access-Control-Allow-Origin(Firefox,Safari等):由於我無法修改標題而被排除在外
c) JSONP:再次這不起作用,因為我無法將響應包含在函數名稱中

作為一種解決方法,僅用於測試我已將http://xyz.com添加到受信任列表,並為此列表中的站點啟用了http://xyz.comAccess Data Across Domains AFAIK,此選項僅適用於IE 5+瀏覽器。 此解決方法允許我發送和接收來自http://127.0.0.1:8080消息
替代文字

我的問題是雙重的
1)如果我在投入生產時繼續使用上述方法,那么我向用戶展示的安全隱患是什么? 我可以堵這些洞嗎?
2)我是否還有其他選擇可以實現我的目標。

PS:我希望盡可能遠離ActiveX或Flash,但是如果這是我當前方法唯一可行的替代方案,那么我將不得不遵守這條路線

干杯

如果本地應用程序可以提供單個html文檔,作為橋接器,那么您可以輕松地使用跨文檔消息傳遞(例如使用easyXDM )以及來自此文檔的ajax請求來執行此操作。 這是一種非常簡單的方法,也是一種常用的方法。

easyXDM實際上附帶了這樣的文檔,你可以在這里閱讀它。

我認為最簡單的方法是將服務器腳本放在https://xyz.com ,它將充當javascript文件和ABC之間的橋梁。 然后javascript文件將簡單地向它自己的服務器腳本發送一個AJAX請求,該腳本將負責從遠程域獲取信息。 唯一可行的解​​決方案可以在大多數瀏覽器中使用,並且不需要使用某些客戶端技術(如Flash或ActiveX),這是JSONP,但您已經排除了這一點,因為您無法控制遠程域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM