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

标签 javascript websocket iis-7.5 internet-explorer-11

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

        <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/

相关文章:

javascript - WebSocket 连接到...失败 : Error during WebSocket handshake: Unexpected response code: 200

c# - 添加 IIS UrlRewrite 似乎会破坏本地 IIS 服务器上的调试

asp.net-web-api - .Net Web API 未找到与请求 URI 匹配的 HTTP 资源

powershell - 特定的 PowerShell 模块未自动加载

javascript - 如何从网站网址获取图像并将所有图像存储在 PC 的文件夹中?

node.js - 如何在同一端口但在不同路径上一起使用 socketio 和 ws

javascript - 在功能性无状态 react 组件中有很多内部 'helper' 函数是否会导致性能下降

java - 我是否需要 Java WebSocketServer 的应用程序服务器

javascript - 当 iframe 在 jQuery 中完成加载时,如何触发事件?

javascript - 半屏渲染 Mapbox canvas