如何在nodejs中的https.request上绕过GetAddrInfoReqWrap.onlookup错误

时间:2017-11-24 22:12:16

标签: node.js https dns getaddrinfo

这是我第一次使用stackoverflow,我需要一些帮助。 这是问题所在:

我需要使用http(s).request()从postimg.org获取图像,并将其作为dataUrl发送给客户端。假设图像地址是: "https://s20.postimg.org/lsjlwkdf/how_beautyfull_you_are.jpg"

使用服务器获取映像然后将其发送到客户端的原因 因为来自我的服务器的dataurl是污染的画布不能在浏览器中使用。

问题是,当我从服务器向“s20.postimg.org/lsjlwkdf/how_beautyfull_you_are.jpg”发出http(s)请求时, GetAddrInfoReqWrap.onlookup抛出错误:

Error: getaddrinfo ENOTFOUND s20.postimg.org s20.postimg.org:443
            at errnoException (dns.js:28:10)
            at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)

当我使用本地主机服务器时,我没有收到此错误,但是当我从云小滴服务器运行它时,我收到错误。 我已经尝试过任何可能找到的方法(native nodejs http(s).request(),fetch-node fetch(),request-node)并且总是遇到同样的问题。最后我明白问题是“getaddrinfo”无法解析主机名“s20.postimg.org”

代码:

dns.lookup(host, function (err, address, family) {
    if (err) {
       res.status(404).end();
       console.log("dns.lookup error:", err);
    } else {
       console.log( "address:", address, "family:", family );
       if ( field.value.split("/")[0] == "http:" ) {
           var request = http.request(options, callback );
           request.end();
       } else if ( field.value.split("/")[0] == "https:" ) {
           var request = https.request(options, callback );
           request.end();
       }
    }
});

是否可以在http(s)请求中绕过 getaddrinfo

提前谢谢。

0 个答案:

没有答案