最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - TypeError: request.getHeader is not a function - Stack Overflow

programmeradmin4浏览0评论

I am trying to get header of get request. But i receive the error:

TypeError: request.getHeader is not a function
    at Server.<anonymous> (/home/pi/progs/smarthome/Site/cpu.js:8:27)
    at Server.emit (events.js:198:13)
    at parserOnIning (_http_server.js:695:12)
    at HTTPParser.parserOnHeadersComplete (_http_mon.js:111:17)

here is my code:

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

var server = http.createServer(function(request, response) {

    var temp = fs.readFileSync("/sys/class/thermal/thermal_zone0/temp");
    var temp_c = temp/1000;

    var header = request.getHeader('Content-Type');
    console.log(header);

    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Raspberry Pi cpu temperature: ");
    response.write("\n" + temp);
    response.write("\n" + temp_c);
    response.end();
});
server.listen(8080);

What am I doing wrong?

I am trying to get header of get request. But i receive the error:

TypeError: request.getHeader is not a function
    at Server.<anonymous> (/home/pi/progs/smarthome/Site/cpu.js:8:27)
    at Server.emit (events.js:198:13)
    at parserOnIning (_http_server.js:695:12)
    at HTTPParser.parserOnHeadersComplete (_http_mon.js:111:17)

here is my code:

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

var server = http.createServer(function(request, response) {

    var temp = fs.readFileSync("/sys/class/thermal/thermal_zone0/temp");
    var temp_c = temp/1000;

    var header = request.getHeader('Content-Type');
    console.log(header);

    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Raspberry Pi cpu temperature: ");
    response.write("\n" + temp);
    response.write("\n" + temp_c);
    response.end();
});
server.listen(8080);

What am I doing wrong?

Share Improve this question asked Jul 21, 2021 at 8:06 gre4ka playgre4ka play 231 gold badge1 silver badge3 bronze badges
Add a ment  | 

4 Answers 4

Reset to default 1

Your req.getHeader() is not working because there is no method inside the ining http message object. You are getting an http.IningMessage object which does not have a req.getHeader(). Doc

Neither of these worked for me. I was trying to access a header inside a NextJS Serverless Function, on Vercel. Instead, I was able to get the header with this:

req.headers['header_name']

Insted of using getHeader, you can use :

 var header = request.header.get('Content-Type');
console.log(header);

req.headers['header_name'] really works and the reason is following:

As Ashish Rawat mentioned above in your http.createServer(function(request, response)... construction the 'request' is not http.ClientRequest but http.IningMessage class instance.

So http.ClientRequest.getHeader() method can't be applied here. Instead there's http.IningMessage.headers object. The reason why the way to access 'content-type' key is so unusial is '-' symbol in the middle of 'content-type'. You can access any other key without '-' as usual: req.headers.host, req.headers.connection, req.headers.origin, but in other cases it would be req.headers['bla-bla'] instead: req.headers['content-length'], req.headers['content-type'], req.headers['user-agent'] etc.

发布评论

评论列表(0)

  1. 暂无评论