我有一个使用 Node 和请求的应用程序。直到今天它都运行良好,我不知道为什么但它停止运行了。我正在尝试对特定页面执行简单的 request.get() ,它向我发送超时错误,但库尝试访问的地址与远程地址不同。由于某种原因, Node 请求似乎没有将 url 转换为正确的 ip。
请求通话:
request.get({
url: 'http://www.website.to.request.com:8000/login.aspx',
headers: headers,
}
Node 错误消息:
address:"200.200.00.00"
code:"ETIMEDOUT"
errno:"ETIMEDOUT"
message:"connect ETIMEDOUT 200.200.00.00:8000"
port:8000
stack:"Error: connect ETIMEDOUT 200.200.00.00:8000
at Object.exports._errnoException (util.js:1022:11)
at exports._exceptionWithHostPort (util.js:1045:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)" syscall:"connect"
chrome 调试中的请求:
Request URL:http://www.website.to.request.com:8000/login.aspx
Request Method:GET
Status Code:200 OK
Remote Address:201.11.11.111:8000
Referrer Policy:no-referrer-when-downgrade
注意:如果我尝试访问:201.11.11.111:8000/login.aspx
,它可以工作,但使用 200.200.00.00:8000
则不起作用。
如果我尝试使用 https://www.hurl.it/ 获取页面内容传递 url 和内容类型也有效;
有人知道这个请求有什么问题吗?
最佳答案
您可以尝试在 requestjs 调用之前硬编码 DNS 请求,然后您可以使用返回的 ip 设置请求 url。
这是可用于执行 DNS 查找的 api: https://nodejs.org/api/dns.html
请记住,您可以使用 dns.setServers 对某些 dns 服务器进行硬编码(['8.8.8.8', '8.8.4.4'] 对于 google DNS)
关于javascript - Node 请求IP地址与远程IP地址不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43147087/