我有一个非常简单的网页是空的,除了正文中的以下脚本:
<script type="text/javascript">
var host = "ws://sample-host/echo";
var ws = new WebSocket(host);
</script>
我将此页面托管在运行IIS 7.5的Web服务器上,作为经典ASP.NET应用程序的一部分。当我使用Chrome或Firefox打开页面时,将调用WebSocket构造函数。当我用IE11打开页面时,该函数未定义。
我可以在本地保存页面并在IE,Chrome和Firefox中打开它,并正确调用构造函数。
为什么websocket()仅在托管和使用IE11时未定义?
答案 0 :(得分:0)
默认情况下,属于“本地Intranet”区域的页面将以兼容模式运行IE11,通常是针对不支持WebSocket
构造函数的IE5。
要覆盖此问题,有几个选项,上面的注释中提到了一个:
“您是正确的,似乎有人在网站的
web.config
中添加了自定义元标记,并将其回滚到IE9。”
...要通过IIS进行设置,请修改web.config
:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=Edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
...另一个选择是通过HTML <meta>
标签强制执行此操作...
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
此外,您可以通过定义什么是“本地Intranet”来避开此问题。
警告语 ...