簡體   English   中英

使用IE11 +訪問的CORS使用SSL拒絕訪問localhost

[英]CORS with IE11+ Access Denied with SSL to localhost

非常短版本:是否有人通過AJAX在IE中通過SSL成功請求本地資源? 我無法解決獲得“拒絕訪問”錯誤的問題。


更長的版本:

我正在使用AJAX從運行本地Web服務的應用程序中檢索JSON。 Web服務通道已加密,因此,如果通過HTTPS提供遠程站點,則不會出現“安全頁面上的不安全資源”錯誤。

所以,在地址欄中是一個某種類型的遠程站點...... mysite.com。 它從https://localhost/接收信息。

Web服務正在為CORS設置正確的標頭,並且所有內容都適用於Chrome和Firefox。 在IE中,如果我將https://localhost資源放入地址欄,則會返回並顯示正確的資源。 但是,當使用AJAX(不僅僅是地址欄)時,IE中的安全設置拒絕訪問。 這在(部分)記錄在這里:

當ajax目標是localhost時,IE 10和11中的訪問被拒絕

一個回復中唯一合適的解決方案是將請求域(在本例中為mysite.com)添加到受信任的站點。 這有效,但我們寧願沒有用戶干預......指向如何添加可信站點的知識庫文章幾乎不是一個很好的用戶體驗。 對於該問題的其他回復是無效的,原因如下 - >

一些更絆腳石,我發現了這個:

CORS與IE,XMLHttpRequest和ssl(https)

其中包含一個回復,其中包含IE中AJAX請求的包裝器。 它似乎很有希望,但事實證明,IE11現在已經棄用了XDomainRequest API。 對於微軟而言,這可能是正確的做法......但是現在向XDR對象添加void onProgress處理程序的“黑客”解決方法顯然不是一種選擇,而且曾經很有前途的解決方法包裝器被渲染為無效。

有沒有人遇到過:

a)一種獲取這些請求而無需修改IE中可信站點的方法? 換句話說,第二個鏈接中的變通方法的更新版本?

b)作為“次佳”案例:提示用戶將站點添加到其受信任區域的方法? “mysite.com希望被添加到您的受信任區域。確認是/否”並完成它,沒有他們實際需要打開他們的本機設置對話並手動完成它?

出於安全原因,Internet Explorer的XDomainRequest對象阻止從Internet區域訪問Intranet區域( 請參閱此處的#6 )。 我不會驚訝地發現這個塊被移植到XMLHTTPRequest對象的IE10 + CORS實現中。

一種可能有用的方法是簡單地從localhost更改為127.0.0.1因為后者被視為Internet Zone而不是Intranet Zone ,因此避免了區域交叉。

但是,您應該知道,當站點在增強保護模式(EPM)下運行時,Internet Explorer 10+將阻止對本地計算機的所有訪問(通過任何地址) - 請參閱此帖子中的 “Loopback blocked”。 目前,IE在Metro / Immersive瀏覽模式(不在桌面模式下)運行時僅對Internet站點使用EPM,但這可能在將來發生變化。

不,沒有機制可以從JavaScript顯示區域配置UI或自動將站點從一個區域移動到另一個區域。 但是,您擁有本地服務器這一事實意味着您已在客戶端上運行代碼,這意味着您可以使用適當的API更新客戶端上的區域映射。 請注意,此類更改要求您首先明確獲取用戶權限,以免Windows Defender和其他安全產品將您的安裝程序視為惡意軟件。

因此,總之,使用IP地址應該作為許多但不是所有平台的解決方法。

由於這些是兩個不同的域,因此一種解決方案是創建一個應用程序,以便按照您想要的方向代理請求。

如果您可以控制example.com端,並希望支持帶有自己的localhost服務的用戶,那么這將更難,因為您必須為他們帶來的內容提供更多要求。

但是,如果您可以控制localhost中運行的內容,並希望訪問example.com,並讓它訪問localhost服務,請在首選的Web服務器中設置重定向,或使用反向代理。 您可以將端點添加到不與路徑重疊的同一localhost應用程序,例如,將http://localhost/proxy/%1路由到http://%1 ,而將其余的localhost單獨保留。 或者,在例如http://localhost:8080上運行代理,該代理執行類似的重定向,並且可以從路徑提供example.com,從另一個提供API。

這最終成為一種“膠水”或集成代碼,它應該允許您模擬交互到一定程度。

暫無
暫無

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

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