node.js http.get()在不发送主机名的情况下发出请求
我有一些node.js代码如下:node.js http.get()在不发送主机名的情况下发出请求,http,node.js,Http,Node.js,我有一些node.js代码如下: Updater.prototype.poll= function(callback) { var options = { host: api_host, port: 80, path: update_path, method: 'GET', agent: false, headers: [{'accept-encoding': '*;q=1,gzip=0'}] }; console.log('Polling')
Updater.prototype.poll= function(callback) {
var options = {
host: api_host,
port: 80,
path: update_path,
method: 'GET',
agent: false,
headers: [{'accept-encoding': '*;q=1,gzip=0'}]
};
console.log('Polling');
var req = http.get(options, function(res) {
//other stuff here...
});
})
问题是,当发送请求时,服务器返回
400错误请求-无效主机名
。我用wireshark嗅探了TCP流,它似乎没有发送http请求的主机
部分,而是生成了一行,看起来像:undefined:undefined
。我确信api\u host
变量设置正确(我甚至尝试使用硬编码字符串)。我还尝试使用hostname
而不是host
。是否有一个已知的原因,它可能会这样做?看起来您可能正在确认我在创建http请求的新样式中也遇到了一个错误。根据我的测试,我非常确定这与在http头/选项中设置内容类型有关
我回到了原来的方式(即http.createClient()),这是可行的。所以这就是我推荐的看起来您可能正在确认我在创建http请求的新样式中也遇到了一个错误。根据我的测试,我非常确定这与在http头/选项中设置内容类型有关
我回到了原来的方式(即http.createClient()),这是可行的。这就是我的建议。首先,让我们尝试一下页面中的示例。这对你有用吗?如果在这里更换主机怎么办
var options = {
host: 'www.google.com',
port: 80,
path: '/index.html'
};
http.get(options, function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
第二,您是否考虑过使用?它是一个标准模块,可以使用更友好的语法(类似于jQuery)来完成这类工作。首先,让我们在页面中尝试一下示例。这对你有用吗?如果在这里更换主机怎么办
var options = {
host: 'www.google.com',
port: 80,
path: '/index.html'
};
http.get(options, function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
第二,您是否考虑过使用?它是一个标准的模块,可以用更友好的语法(类似于jQuery)来做这类事情。选项的值是什么?选项的值是什么?最后,它是我定义头的一个pb(当我将它从数组表示法
头:[……]
更改为对象表示法头:{……}
它得到了修复最后,它是我定义头的方式中的一个pb(当我将它从数组表示法头:[……]
更改为对象表示法头:{……}
它得到了修复