我想将我的node.js客户端(node-webkit)连接到我没有直接访问的socket.io服务器。服务器需要连接以匹配请求标头中的特定来源,但是我找不到改变它的方法。
这就是我所拥有的:
var io = require('socket.io-client');
socket = io.connect( url );
要重现,需要使用npm安装socket.io
软件包
它连接到服务器,并发送一些“ ping”和“ pongs”,之后服务器终止连接(如预期的那样,因为来源不正确)。
请注意,我无法更改服务器,因此仅将原点添加到白名单是不可能的。
像这样使用extraHeaders
:
socket = io.connect( url, {extraHeaders: {origin: url}} )
..但这不会改变原点。我尝试编辑其他/自定义标题,但是extraHeaders
选项似乎没有任何作用。
我也研究了节点cors
模块,但是documentation仅提供了有关如何为express
应用请求而非socket.io
设置源的示例。
最后,我只是尝试将全局origin
设置为正确的url,但是socket.io
并没有采用。
注意:要检查这些方法是否有效,我查看了DevTools中的“网络”标签以查看请求标头。
答案 0 :(得分:0)
您无需在客户端进行任何更改,这是服务器端的配置。
如果您有权访问该服务器,只需将您的来源添加到 IO Server 来源列表或将其设置为*。
这是来自 socket.io how to link的docs。