【问题标题】:socket.io Access Denied in iE10 on SharePoint2013在 SharePoint2013 上的 iE10 中,socket.io 访问被拒绝
【发布时间】:2014-07-18 06:10:27
【问题描述】:

喂,

我在 HTTPS 下的 NodeJS 环境中运行 socket.io 服务器。 调用我的应用程序以开始与我的 socket.io 服务器通信的 js 代码在 sharePoint 2013 实例 (Office 365) 上运行。

如果我在 Chrome 或 Firefox 中访问我的页面,一切正常。 在 iE10 中,我从控制台中的 socket.io 客户端得到以下警告

SCRIPT5: Access is denied. 
socket.io.js, line 1641 character 9

下面一行

    xhr.open('GET', url, true);

似乎来自 SharePoint 的 iE 或 IIS 在使用 jsonp/xhr - 轮询时假定了 XSS。配置的传输是

  • 'jsonp-polling'
  • 'websocket'
  • 'xhr-polling'

按这个顺序。我们使用

  • SocketServer 0.9.16
  • SocketClient 0.9.11

我只是为了测试目的而设置的

   io.util.ua.hasCORS = false;

在第 1626 行,这有帮助,但当然会导致安全警告 allá

SEC7130: Potential cross-site scripting detected

有谁知道我做错了什么或这里有什么问题?提前致谢!


编辑 在我做了更多研究后,我在googleGroups 上发现了以下讨论。我还评论了我的GitHub Issue

【问题讨论】:

  • 出于安全原因,您必须连接到相同的服务器和端口以防止任何 CORS。现代浏览器在某些情况下可能会忽略它,并且有些浏览器会实现额外的功能来通过标头来克服它,但通常它并没有得到很好的支持,因此您必须尝试将 WebSockets 放在与 HTML 相同的域(不是必需的服务器)上服务器来自。

标签: javascript node.js socket.io internet-explorer-10 sharepoint-2013


【解决方案1】:

已修复!解决方案是您必须在发送 cookie 之前添加一个 p3p 标头。标题应该是这样的

res.setHeader("p3p", "CP=\"COM CNT DEM FIN GOV ONL OTC PHY ALL DSP NID OHO CUR OUR BUS IND LEG NOR STP\"");

【讨论】:

    【解决方案2】:

    在行上设置断点并检查 url。我的应用程序在http://www.localhost/(...) 中运行,网址是http://localhost/(...)

    之前

    var socket = io.connect('http://localhost:4000', { query: "fk="+my_id });

    之后

    var socket = io.connect('http://www.localhost:4000', { query: "fk="+my_id });

    问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-27
      • 2012-10-17
      • 2012-03-24
      • 2021-07-15
      • 2019-02-07
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      相关资源
      最近更新 更多