gpt4 book ai didi

javascript - 为什么仅在托管并使用 IE11 时 WebSocket(URL) 才未定义?

转载 作者:行者123 更新时间:2023-11-28 05:49:09 24 4
gpt4 key购买 nike

我有一个非常简单的网页,除了正文中的以下脚本之外,该网页是空的:

        <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 中打开它,并且构造函数被正确调用。

为什么只有在托管和使用 IE11 时 websocket() 才未定义?

最佳答案

默认情况下,属于“本地 Intranet”区域的页面将以兼容模式运行 IE11,通常是 IE5,它不支持 WebSocket构造函数。

要覆盖此设置,有几个选项,上面的评论中提到了一个:

"You are correct, it looks like someone added a custom meta tag in the site's web.config rolling it back to 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”来规避此问题...

  • IE11,兼容性 View 设置,(取消选中)在兼容性 View 中显示 Intranet 站点
    -- 或 --
  • IE11、Internet 选项、安全、本地 Intranet、站点(用于定义如何检测 Intranet 网络的多个选项)

注意事项...

  • 由于历史原因,当这些设置被篡改时,许多环境都会崩溃,因为网站在编写时就考虑到了 IE5 兼容性。由于这些原因,逐页或逐站点解决方案通常比更改 PC 上的设置更受青睐。
  • 由于组策略域和 IE11 支持的常见配对,“受信任的站点”和“本地 Intranet 区域”等“Internet 选项”可能会显示为灰色。与您的域管理员合作,根据需要进行调整。

关于javascript - 为什么仅在托管并使用 IE11 时 WebSocket(URL) 才未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38231629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com