【问题标题】:Problem with http GET request on node js节点js上的http GET请求问题
【发布时间】:2011-07-30 08:48:25
【问题描述】:

我正在编写一个 http 客户端以使用 node.js 并使用以下代码从 facebook 读取:

var http = require('http');

var options = {
  host: 'www.fb.com',
  path: '/',
  "user-agent": "node.js"
};

http.get(options, function(res) {
  console.log("Got response: " + res.statusCode);
  console.log(res.headers);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});

在我的浏览器中,这会返回带有 www.facebook.com 位置的 301 重定向,但是在 node.js 中,我会收到带有 www.fb.com/common/browser.php 位置的 302 响应。 我用最新版本的node试了一下,还是报这个错误。

非常感谢您对此提供的帮助, 谢谢。

【问题讨论】:

  • 我意识到问题出在哪里。我没有使用 http.client 发出请求。我猜客户端处理keepalive响应和cookie并将其抽象出来。 HTTP GET 每次发送一个新的请求,请求之间不维护状态。所以 fb.com 必须做类似的事情,如果 cookie 未设置重定向到 fb.com 并设置 cookie。我可能需要更多的启发。但故事的寓意......使用 http.client 发出请求。你会得到正确的行为

标签: http node.js


【解决方案1】:
var request_options = 
{
    host: 'www.fb.com',
    headers: {'user-agent': 'Mozilla/5.0'},
    path: '/'
};

以这种方式设置请求选项应该可以工作。

【讨论】:

    【解决方案2】:

    这似乎是 node.js 的一个错误,我在 curl 中向 fb.com 发出了请求,我得到了相同的重定向。

    它可能会根据用户代理做出决定...也许您可以使用浏览器的用户代理:D

    【讨论】:

      猜你喜欢
      • 2017-07-29
      • 2011-06-12
      • 2020-06-08
      • 2018-05-04
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多