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

Node.js http.get against squarespace.com site has status code 403

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

当我 运行 节点应用程序现在 node app.js 它输出 403 状态代码。

我已经在其他网站上尝试过此代码并且它工作正常,只是不适用于 squarespace 网站。对 SS 上的配置或我需要在 Node 中做的其他事情有任何想法吗?

问题是远程服务器是 expecting/requiring User-Agent header 并且节点不会自动发送这样的 header。添加那个,你应该得到一个 200 响应:

// ...

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

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

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