首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过apache服务器的Socket.io聊天(也运行php主站点)

通过apache服务器的Socket.io聊天(也运行php主站点)
EN

Stack Overflow用户
提问于 2012-12-25 16:03:29
回答 1查看 1.2K关注 0票数 1

我一直在尝试为我的网站想出一个解决方案,让它能很好地与socket.io打交道。现在我让apache为我的网站提供服务(主要是用php),我正在尝试使用socket.io (节点)实现一个实时聊天支持功能。我可以让聊天功能单独工作(使用express和转到wundertutor.com:8000),但当我只转到wundertutor.com (其中也包括聊天功能)时,我遇到了CORS (跨域资源共享)的问题。下面是我的错误(在客户端):

代码语言:javascript
复制
XMLHttpRequest cannot load http://chat.wundertutor.com/socket.io/1/?t=1356421805823. Origin http://wundertutor.com is not allowed by Access-Control-Allow-Origin.

代码语言:javascript
复制
XMLHttpRequest cannot load http://chat.wundertutor.com/socket.io/1/?t=1356422229000. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.

取决于我的app.js中是否包含这行代码

代码语言:javascript
复制
io.set("origins","http://wundertutor.com");

基本上,我只想让我的节点应用程序成为我的主站点的补充,但我真的不知道在哪里指定CORS参数。我已经在我的.htaccess文件、app.js和客户端javascript中尝试过这样做,但都没有成功。

(另外,我发现另一件奇怪的事情是,当我转到wundertutor.com:8000时,我的节点应用程序正确地打开了一个websocket,但当我试图转到wundertutor.com时,它试图使用XHR轮询,这最终导致了CORS混乱)

如有任何建议,我们将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2012-12-28 15:54:27

如果其他人遇到同样的问题,我发现了我的问题。虽然我仍然认为我试图做的是使用CORS,但我并不需要在Apache或node.js端进行任何特定的访问-允许-起源-控制设置。我解决这个问题的方法是从node.js服务器而不是apache服务器提供apache javascript文件。这使得来自socket.io javascript文件的请求具有与加载javascript文件的位置相同的来源。下面是一个示例:

代码语言:javascript
复制
<script src="http://wundertutor.com:8000/socket.io/socket.io.js"> </script> 
(node server - correct)

vs

代码语言:javascript
复制
<script src="/javascripts/socket.io.js"></script>
(apache server - wrong)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14028824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档