如何为socket.io-client连接设置自定义来源?

时间:2018-08-19 19:17:52

标签: node.js socket.io cors cross-domain node-webkit

我想将我的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中的“网络”标签以查看请求标头。

1 个答案:

答案 0 :(得分:0)

您无需在客户端进行任何更改,这是服务器端的配置。

如果您有权访问该服务器,只需将您的来源添加到 IO Server 来源列表或将其设置为*。

这是来自 socket.io how to linkdocs