我有一个简单的node.js服务器,其运行在8080端口上,带有socket.io,代码来自What is an example of the simplest possible Socket.io example?。
当我连接curl时,它工作正常:
curl -vk http://www.example.com:8080
* Connected to www.example.com (123.456.789.123) port 8080 (#0)
当我在Mac上使用Chrome 70.0.3538.110浏览到http://www.example.com:8080时,它将一直加载,直到得到ERR_CONNECTION_TIMED_OUT
。我在Safari中得到了相同的结果。
但是,当我直接浏览到http://123.456.789.123:8080这样的IP时,它立即可以工作。
为什么会这样?该域指向正确的IP,显然它可以卷曲,也可以wget。是否缺少标题或浏览器需要的其他东西?
我在与之不同的关于接受标头上发现了一些可能与之相关的信息:
在您的浏览器中不起作用的原因可能是它发送了一个诸如以下的accept标头:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,\*/\*;q=0.8
curl(可能是Chrome扩展程序)要求:
Accept: \*/\*
但是,index.js具有res.writeHead(200, {'Content-Type': 'text/html'});
,所以我认为它应该发送适当的标头。它也可以在具有IP的浏览器中使用,因此可能与此无关。
我该如何解决?