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

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

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> 

我意识到自问这个问题已经很长时间了,但是你可能想要让你的节点应用程序也允许CORS。 你可以用以下方法做到这一点:

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

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

除非您希望其他域能够访问受该mod_headers.c影响的内容,那么将访问控制限制为如下域名:

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

即去除错误正在抱怨的通配符“*”。