[英]cross domain localhost:port request denied with $http angularjs request to web api
[英]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.com
的Access Data Across Domains
。 AFAIK,此選項僅適用於IE 5+瀏覽器。 此解決方法允許我發送和接收來自http://127.0.0.1:8080
消息
我的問題是雙重的
1)如果我在投入生產時繼續使用上述方法,那么我向用戶展示的安全隱患是什么? 我可以堵這些洞嗎?
2)我是否還有其他選擇可以實現我的目標。
PS:我希望盡可能遠離ActiveX或Flash,但是如果這是我當前方法唯一可行的替代方案,那么我將不得不遵守這條路線
干杯
我認為最簡單的方法是將服務器腳本放在https://xyz.com
,它將充當javascript文件和ABC之間的橋梁。 然后javascript文件將簡單地向它自己的服務器腳本發送一個AJAX請求,該腳本將負責從遠程域獲取信息。 唯一可行的解決方案可以在大多數瀏覽器中使用,並且不需要使用某些客戶端技術(如Flash或ActiveX),這是JSONP,但您已經排除了這一點,因為您無法控制遠程域。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.