针对squarespace.com站点的Node.js http.get具有状态代码403

时间:2015-02-17 23:19:23

标签: node.js squarespace

当我为一个转到SquareSpace(SS)网站的URL做一个简单的http.get时,我收到了403消息。我知道该网站正在运行,服务器可以访问它。这是一个针对SS站点的简单示例(不是我的,但产生相同的问题):

  • 显示服务器可以访问网站: curl http://www.letsmoveschools.org This returns all the HTML from the site...

  • 节点应用

    var http = require('http');
    var url;
    
    url = 'http://www.letsmoveschools.org/';
    
    var req = http.get(url, function(res) {
    
      res.on('data', function(chunk) {
       //Handle chunk data
      });
    
      res.on('end', function() {
        // parse xml
        console.log(res.statusCode);
      });
    
      // or you can pipe the data to a parser
      //res.pipe(dest);
    
    });
    
    req.on('error', function(err) {
      // debug error
      console.log('error');
    });
    

当我立即运行节点应用node app.js时,它会输出403状态代码。

我已经尝试过这个代码与其他网站,它工作正常,只是不对方空间网站。想知道SS上的配置或我需要在Node中做什么吗?

1 个答案:

答案 0 :(得分:1)

问题是远程服务器期望/需要User-Agent标头,并且节点不会自动发送此类标头。添加它,你应该得到200响应:

// ...

url = 'http://www.letsmoveschools.org/';

var opts = require('url').parse(url);
opts.headers = {
  'User-Agent': 'javascript'
};

var req = http.get(opts, function(res) {
// ...