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 badges4 Answers
Reset to default 1Your 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.