我有两个网站:
1)httpwebsite.com我在哪里运行使用APACHE,PHP和MYSQL的Web应用程序;
2)wss.com运行nodeJS websocket服务器,用于多人游戏;
我想在httpwebsite.com上托管与websocket服务器通信的javascript客户端文件,所以我不必在nodeJS上配置http服务器,原因很多,比如安全性和缺乏使用nodeJS的经验作为HTTP服务器。
出于性能和灵活性等原因,我想将nodeJS仅用于websocket服务器。
我听说Same-origin策略限制了httpwebsite.com与wss.com之间的通信,但是可以将其重新配置为实际允许两个不同域之间的通信,这些域之间是故意相互通信的吗?
除了在nodeJS服务器上实际运行HTTP服务器之外,我还有其他选择吗?
答案 0 :(得分:1)
您可以将CORS用于从一个域到另一个域的安全请求。
答案 1 :(得分:0)
2个选项:
您可以将CORS标头添加到wss.com,以允许访问website.com以加载它的资源。 Matt给出的链接应该解释这是如何工作的,你只需要将这个HTTP Header添加到你需要访问的每个Node服务器上。
您可以通过Apache服务器将请求代理到节点服务器。因此,Web浏览器认为它与同一来源的服务进行通信。这通常只用于让您的Web服务器公开可用,并且您的应用服务器(运行节点)不能直接在防火墙后面提供和保护 - 尽管Apache显然需要能够访问它。
您可以在Apache中使用此配置来实现选项2,以便将http://website.com/api呼叫转发到在端口3000上运行在wss.com上的服务。
#send all /api requests to node
ProxyPass /api http://wss.com:3000
#Optionally change all references to wss.com to this domain on return:
ProxyPassReverse /api http://wss.com:3000