当我使用http模块获取.org域名时,我得到了400响应。 (尝试使用google.org,这不是服务器错误。)这是正常行为吗?
var http = require('http');
http.get("google.org", function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
答案 0 :(得分:3)
您的代码发出以下HTTP请求:
GET google.org HTTP/1.1
Host: localhost
这是您的本地计算机响应400(因为请求确实无效)。发生这种情况是因为internally,节点使用url module来解析您传递给http.get
的字符串。 url将字符串 google.org 视为相对路径。
url.parse('google.org');
{ protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: null,
query: null,
pathname: 'google.org',
path: 'google.org',
href: 'google.org' }
由于您的字符串解析为空主机名,节点defaults使用localhost。
尝试使用完全限定的网址。
var http = require('http');
http.get("http://google.org", function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});