簡體   English   中英

node.js中的GET請求不起作用

[英]GET Request in node.js is not working

我在通過Node.js加載頁面時遇到了很大的麻煩。 這是我的Node.js應用程序的代碼,請注意,如果我嘗試加載其他資源(例如www.google.com),該代碼將起作用,因此該問題僅針對域名www.egopay.com:

 var http = require('http');
 var options = {
    hostname: 'www.egopay.com',
    port: 80,
    path: '/',
    method: 'GET'
};

var req = http.request(options, function(res) {
    console.log('STATUS: ' + res.statusCode);
    console.log('HEADERS: ' + JSON.stringify(res.headers));
    res.setEncoding('utf8');
    res.on('data', function (chunk) {
        console.log('BODY: ' + chunk);
    });
});

req.on('error', function(e) {
    console.log('problem with request: ' + e.message);
});

// write data to request body
req.write('data\n');
req.write('data\n');
req.end();

使用cURL可以工作,而Node.js則不行。

請求后大約一分鍾出現此錯誤:

problem with request: read ECONNRESET

當我發出相同的請求,但在標頭中添加了一個用戶代理時,我得到了響應,這清楚了正在發生什么。 嘗試將此行添加到您的選項中:

headers: {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36'},

基本上,他們有一台nginx服務器,可以將您重定向到具有相同URL的HTTPS站點。 在不包括用戶代理的情況下未得到響應,可能是該站點的nginx部署中的錯誤。 我無法用其他方式解釋它,因為我無法在Chrome或Firefox中重新創建這種情況。 即使使用空的用戶代理程序覆蓋。 我想這是空字符串和未定義字符串之間的區別。 節點發送的報頭字段完全未定義,而我嘗試復制的瀏覽器僅發送一個空字符串。 同樣,無法重新創建,但這是我的最佳猜測。

我在Node js中的請求有類似的問題,所以我寫了這個npm包:

https://npmjs.org/package/curljs

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM