与socket.io(节点)和apache在同一服务器上运行的CORS错误

时间:2012-12-22 20:45:21

标签: node.js socket.io cors

我正在为我的网站创建一个功能,人们可以与我聊天。为了做到这一点,我使用php和apache构建了站点的常规部分,并使用node.js(使用socket.io和express)构建了聊天服务器。当人们去我们的网站时,如果他们想与我聊天(在同一个窗口,而不是弹出窗口),有一个小栏从侧面滑出。聊天服务器在运行时,我看到客户端正在尝试连接:

info  - socket.io started
Express server listening on port 8000 in development mode
debug - client authorized
info  - handshake authorized 776963641537662118

它没有进一步,尝试通过websockets或XHR连接,我在控制台的客户端获得以下错误:

XMLHttpRequest cannot load http://wundertutor.com:8000/socket.io/1/?t=1356208544112. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.

另外,我在.htaccess文件中有这个:

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>

2 个答案:

答案 0 :(得分:2)

我意识到自问这个问题以来已经很长时间了,但您可能想尝试让您的节点应用程序也允许CORS。您可以使用以下方法执行此操作:

io.set('origins', 'http://example.com:80');

其中example.com是请求的来源。这就是我在我的应用程序上所做的,它允许CORS请求。

答案 1 :(得分:0)

除非您希望其他域能够访问受mod_headers.c影响的内容,然后将访问控制限制为您的域,如下所示:

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin http://wundertutor.com/
</IfModule>

即。删除通配符&#34; *&#34;这个错误正在抱怨。