我有一个使用节点和请求的应用。它运作良好,直到今天,我不知道为什么,但它停止工作。我正在尝试对特定页面执行一个简单的request.get(),它向我发送一个超时错误,但是lib尝试访问的地址与远程地址不同。似乎节点请求由于某种原因没有将url转换为正确的ip。
请求电话:
request.get({
url: 'http://www.website.to.request.com:8000/login.aspx',
headers: headers,
}
节点错误消息:
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/获取网页内容并传递网址和内容类型也有效;
有人知道这个请求有什么不对吗?
答案 0 :(得分:0)
您可以在requestjs调用之前尝试对DNS请求进行硬编码,然后您可以使用您获得的IP设置请求URL。
这是您可以用来执行DNS查找的API: https://nodejs.org/api/dns.html
请记住,你可以使用dns.setServers来硬编码一些dns服务器(谷歌DNS的['8.8.8.8','8.8.4.4'])