我在一台服务器上有一个 nodejs 应用程序,在端口 443 上运行(禁用 apache 侦听),并包含以下 node.js 包:
Express: 3.2.1
Socket.io: 0.9.14
Request: 2.21.0
Node: 0.11.1
然后,我在第二台服务器上有一个启用了 nodejs 模块的 drupal 站点。我在第一个提到的服务器上使用 Nodejs 应用程序构建了一个聊天。到目前为止一切都很好,经过很多痛苦之后我设法让一切正常工作。除 IE10 外均适用。
我在 IE10 的控制台中不断收到错误:
SEC7118: XMLHttpRequest for https://mynodejs.com/socket.io/1/?t=1370206038749
required Cross Origin Resource Sharing (CORS).
据我了解,IE10全面支持CORS。不知何故,该错误并没有停止 socket.io 本身的加载,并且打开了一个 websocket。在我的 node.js 应用程序的日志中,用户已获得授权并添加了他的频道。在网站上,使用IE10的用户可以看到其他人,甚至可以向其他人发送消息。但他无法接收其他聊天用户的消息......
我将 node.js 应用程序设置为返回基本 CORS 的正确标头:
Access-Control-Allow-Origin https://mydrupalsite.com
Access-Control-Allow-Headers Origin, X-Requested-With, X-File-Name, Content-Type, Cache-Control
Access-Control-Allow-Credentials true //with or without, it makes no difference
我故意不包含 Node.js 应用程序中的任何代码,因为它可以在任何其他浏览器上完全运行。
谁能告诉发生了什么事吗?有人成功让 Node.js 应用程序在 IE10 上运行吗?