【问题标题】:HTTP GET request (Node) returns 501HTTP GET 请求(节点)返回 501
【发布时间】:2017-05-16 19:54:40
【问题描述】:

我正在 Node.js 上测试虚假的 HTTP 请求。但是我在定义 GET、POST 方法或“FOO”的标题上得到了相同的结果 (501)。我不明白输出。有人可以给我一个提示吗?代码:

var http = require('http');
var fs = require('fs');


var options = {
    method: "FOO" //or GET 
    , uri: 'https://www.google.com'


};

var callback = function(response){
   var exportJson= JSON.stringify(response.headers);
   var arrayData =[];
   response.on('data', function(data) {
      arrayData += data;

   });

   response.on('end', function() {
     console.log('THE DATA IS ' + arrayData);


   });
    fs.appendFile("input.txt", exportJson, function(err) {
    if(err) {
        return console.log(err);
        }
    });

}



var req = http.request(options, callback); 


function test(){

for (var prop in options.method) {
  //console.log(`options.method${prop} = ${options.method[prop]}`);
   //console.log(req);
  req;
}

}

test();     
req.end();

控制台说的“GET”或“FOO”方法:

<h2>HTTP ERROR 500.19 - Internal Server Error</h2>

【问题讨论】:

  • nodejs 控制台中的任何错误日志?
  • 这是我得到的错误,你可以看到我的日志是一个包含所有变量的数组,我也可以在标题标签中看到这个 501

标签: javascript node.js http


【解决方案1】:

options object 没有uri 键,您应该使用hostname

另外,不要指定主机内部的协议,使用密钥protocol

你的对象应该是:

const options = {
    hostname: 'www.google.com', 
    protocol: 'https:',
}

请记住,要使用 https,您需要包含正确的模块:

const https = require('https');

【讨论】:

  • 它有效,谢谢,但我不得不将 https 更改为 http,因为它说不支持 https...也许您必须编辑答案以便我可以验证?
  • @glassraven 我已经更新了答案以展示如何使用 htps
猜你喜欢
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 2015-11-22
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多