node-request ip addres与远程ip地址不同

时间:2017-03-31 18:08:56

标签: javascript node.js request node-request

我有一个使用节点和请求的应用。它运作良好,直到今天,我不知道为什么,但它停止工作。我正在尝试对特定页面执行一个简单的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/获取网页内容并传递网址和内容类型也有效;

有人知道这个请求有什么不对吗?

1 个答案:

答案 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'])

相关问题