Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js http.get()在不发送主机名的情况下发出请求_Http_Node.js - Fatal编程技术网

node.js http.get()在不发送主机名的情况下发出请求

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')

我有一些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');
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(当我将它从数组表示法
头:[……]
更改为对象表示法
头:{……}
它得到了修复