当我为一个转到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中做什么吗?
答案 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) {
// ...