如何设置socket.io origin来限制与一个url的连接 [英] how to set socket.io origins to restrict connections to one url
问题描述
我们有一个html站点和一个为该网站提供服务的node.js服务器。
网站和服务器使用socke.io交换数据。
我们在文档中找到了这个:
We have one html site and one node.js server which serves that website. The website and the server exchange data using socke.io. We found this in the documentation:
起源默认为 *:*
允许连接到Socket.IO服务器的来源。
我们的html.site在 http://questionexample.com/page1
。
只有这个网站可以连接到我们的服务器。(但每个人都可以连接到该网站。)
我们如何设置起源?
Our html.site is on http://questionexample.com/page1
.
Only this site may connect to our server.(But everyone may connect to that website.)
How do we have to set the origins?
推荐答案
如果你深入了解Socket.io源代码,你会发现这样的行:
If you dig into Socket.io source code, you will find such lines:
var origin = request.headers.origin || request.headers.referer
, origins = this.get('origins');
...
var parts = url.parse(origin);
parts.port = parts.port || 80;
var ok =
~origins.indexOf(parts.hostname + ':' + parts.port) ||
~origins.indexOf(parts.hostname + ':*') ||
~origins.indexOf('*:' + parts.port);
正如您所见,Socket.io接收来自客户端的源(或引用),检索域名称和端口,
并与您指定的 origin
选项进行比较。
As you can see Socket.io takes origin (or referer) that came from the client, retrieves domain name and port,
and compares with the origins
option you specified.
所以有效来源
值为( *
表示任何):
So the valid origins
values are (*
means "any"):
-
testsite.com:80
-
http ://testsite.com:80
-
http:// *:8080
-
*:8080
-
testsite.com:* http:// someotherdomain .com:8080
(多个来源以空格分隔) -
testsite.com:* / somepath
(socket.io将忽略/ somepath) -
*:*
testsite.com:80
http://testsite.com:80
http://*:8080
*:8080
testsite.com:* http://someotherdomain.com:8080
(multiple origins separated by space)testsite.com:*/somepath
(socket.io will ignore /somepath)*:*
这些都是无效的(因为没有端口号):
And these are invalid (because no port number):
-
testsite.com
-
http://testsite.com
-
http://testsite.com/somepath
testsite.com
http://testsite.com
http://testsite.com/somepath
另请注意,如果您指定 sub.testsite.com
作为原始值,则 testsite .com
将有效来源。
Also note that if you specify sub.testsite.com
as origins value, the testsite.com
will be valid origin.
这篇关于如何设置socket.io origin来限制与一个url的连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!