差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
pc:windows:network:ipv6:unc_path_limitation [2020/01/26 14:40] tony |
pc:windows:network:ipv6:unc_path_limitation [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | {{tag>ipv6 windows unc ie edge}} | ||
====== Windows上使用IPv6所遇到的UNC路徑限制 ====== | ====== Windows上使用IPv6所遇到的UNC路徑限制 ====== | ||
===== Problem ===== | ===== Problem ===== | ||
- | {{:pc:windows:network:ipv6:ipv6_ie_websocket_syntax_error.png|}} | + | 雖然我們很不想支援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? ===== | ===== 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的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。\\ | ||
+ | \\ | ||
+ | 目前會使用的Workaround為: | ||
+ | * 使用Literal IPv6 address去避掉這問題。 | ||
+ | * 如果User使用FQDN存取Server,也不會有這個問題。 | ||
===== Reference ===== | ===== 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://github.com/SignalR/SignalR/issues/3875|Issue with IPv6 and IE/Edge]] | ||
* [[https://www.qutaojiao.com/19202.html|通过web控制灯泡]] | * [[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]] | ||
+ | ===== ===== | ||
+ | ---- | ||
+ | \\ | ||
+ | ~~DISQUS~~ |