1

我正在为我的网站创建一个功能,人们可以在其中与我实时聊天。为了做到这一点,我使用 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>
4

2 回答 2

2

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

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

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

于 2014-12-04T20:04:53.207 回答
0

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

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

即删除错误所抱怨的通配符“*”。

于 2012-12-22T21:58:33.583 回答