差異處
這裏顯示兩個版本的差異處。
pc:windows:network:ipv6:unc_path_limitation [2020/01/26 16:15] tony |
pc:windows:network:ipv6:unc_path_limitation [2023/06/25 09:48] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== Windows上使用IPv6所遇到的UNC路徑限制 ====== | ||
- | ===== Problem ===== | ||
- | 雖然我們很不想支援IE,但我們還是要在IE上測試我們的軟體,是否有支援IPv6;不幸地,在使用IPv6位置連接後,就發生了JavaScript的錯誤。打開開發人員工具查看一下發現是語法錯誤,這是與websockt相關的程式碼:\\ | ||
- | {{:pc:windows:network:ipv6:ipv6_ie_websocket_syntax_error.png|}}\\ | ||
- | \\ | ||
- | 我的測試環境為Win7,IE11 11.0.9600.19356,測試結果可能會因為瀏覽器版本不同有所差異。 | ||
- | ===== How to resolve? ===== | ||
- | 經過同事查詢,說這應該是Windows的限制,IPv6中的冒號為UNC路徑不合法字元。只要使用Literal IPv6 address就可以避免此問題(參考[[https://en.wikipedia.org/wiki/IPv6_address#Literal_IPv6_addresses_in_UNC_path_names|link]]),假設你的IPv6為: | ||
- | <code> | ||
- | 2001:db8:85a3:8d3:1319:8a2e:370:7348 | ||
- | </code> | ||
- | 只要將:變為-,然後在後面串上.ipv6-literal.net,Windows可以不透過DNS自動幫你轉換這樣的名稱: | ||
- | <code bash> | ||
- | 2001-db8-85a3-8d3-1319-8a2e-370-7348.ipv6-literal.net | ||
- | </code> | ||
- | 除此之外,我嘗試去調整wicket-websocket-jquery.js,在建websocket之前將IPv6改為Literal IPv6 address: | ||
- | <code javascript> | ||
- | var ws_host_addr = document.location.hostname.replace(/[\[\]]/g, ''); | ||
- | ws_host_addr = ws_host_addr.replace(/:/g, "-"); | ||
- | ws_host_addr += ".ipv6-literal.net"; | ||
- | |||
- | url = protocol + '//' + ws_host_addr + _port + WWS.contextPath + WWS.filterPrefix + '/wicket/websocket'; | ||
- | </code> | ||
- | 但jetty會找不到對應的session。 | ||
- | ===== Reference ===== | ||
- | * [[https://en.wikipedia.org/wiki/IPv6_address#Literal_IPv6_addresses_in_UNC_path_names|wiki - Literal IPv6 addresses in UNC path names]] | ||
- | * [[https://github.com/SignalR/SignalR/issues/3875|Issue with IPv6 and IE/Edge]] | ||
- | * [[https://www.qutaojiao.com/19202.html|通过web控制灯泡]] | ||
- | * [[https://github.com/apache/wicket/blob/master/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js|wicket-websocket-jquery.js]] | ||
- | |||