socket.io在SharePoint2013上的iE10中拒绝访问

时间:2013-07-05 14:12:59

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

Hya星,

我在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);

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

  • 'JSONP轮询'
  • '的WebSocket'
  • 'XHR轮询'

按此顺序。我们使用

  • SocketServer 0.9.16
  • SocketClient 0.9.11

仅出于测试目的,我只需设置

   io.util.ua.hasCORS = false;
第1626行

有帮助,但当然导致安全警告全部

SEC7130: Potential cross-site scripting detected

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


在我做了更多研究后,

编辑 我在googleGroups找到了以下讨论。我还评论了我的GitHub Issue

2 个答案:

答案 0 :(得分:1)

固定!解决方案是您必须添加一个p3p标头bevor您发送cookie。标题应该看起来像那样

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

答案 1 :(得分:0)

在线上设置断点并检查网址。我的应用在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 });

问候。