2015-07-21 128 views
5

我有網站和桌面應用程序,我想通過websockets連接它們。因此,例如,我的網站嘗試連接到wss:// localhost:8080。微軟Edge不允許websockets的本地主機回送

它工作在IE11,但在「MS邊緣」我有一個錯誤:

Cross zone request is not allowed

我對Win10 10240這個問題,所以標記「允許本地主機環回」是默認啓用的,它沒有幫助。

當我使用CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"或此utility時,所有按預期工作。

那麼,這是一個例子,在新版本的「MS Edge」環回允許http,但不允許websockets? 如果是這樣,是否有可能做出一些解決方法,而不是強制我的用戶運行一些shell命令或下載externall實用程序?

相關問題:Can't open localhost in Microsoft Edge (Project Spartan) in Windows 10 preview

回答

4

經過一番研究,我發現錯誤的根源。這裏是我的回購,重現錯誤:https://github.com/AZaviruha/ms-edge-ws-strange

總之,當你在MS邊打電話new WebSocket,它不會產生異常,當你用錯了「本地」 -host參數調用它:

var socket, path; 
var hosts = ['localhost', '127.0.0.1']; 

for (var i in hosts) { 
    path = 'ws://'+hosts[i]+':9446'; 
    console.log('===> Tested path :: ', path); 
    try { 
     socket = new WebSocket(path); 
     break; 
    } 
    catch (e) { 
     // !!! Never shown !!! 
     console.error('===> WebSocket creation error :: ', e); 
    } 
} 

因此,您不能「重試」與不同主機連接。

順便說一句,如果你嘗試非本地不存在的主機,它會產生異常!

+0

你使用了什麼樣的Edge? 10240?您可以通過查看邊緣用戶代理字符串(「Edge/12.XXXXX」,其中XXXXX是內部版本號)進行檢查。 –

+0

我已在10166和10240 – azaviruha

4

在Microsoft Edge瀏覽器的標題欄(搜索欄)中鍵入「關於:標誌」。沒有引號,勾選/取消選中「允許本地主機環回」功能。在Win

邊緣積聚10240(仍然可以作爲構建14393)的

+2

轉載此行爲此外在此處可用的註冊表: 'HKCU \ Software \ Classes \ Local Settings \ Software \ Microsoft \ Windows \ CurrentVersion \ AppContainer \ Storage \ microsoft。microsoftedge_8wekyb3d8bbwe \ MicrosoftEdge \ ExperimentalFeatures \ AllowLocalhostLoopback' 並且,是的,註冊表項的醜陋'8wekyb3d8bbw'部分是完全有效的,它是Microsoft獨特的開發人員ID,它在註冊表中出現了數百次。 – tresf

+0

這似乎很重要,但不適合我 –

1

這家最近發生在我身上做的Windows 10造物主的更新(1703)後,再次。

但修復很簡單。我必須

  1. 檢查@Narcarsiss提到的「allow localhost loopback」功能(不知道是否在更新中被禁用,或者我以前從未檢查過)。
  2. 在地址欄中指定協議(http://localhost:5000/而不是localhost:5000 /)。

做完兩個後,我能夠在MS Edge中再次訪問我的本地主機站點。

相關問題