为请求设置标题时,NodeJS http服务器响应标题为空

时间:2018-11-23 20:33:32

标签: node.js http

所以我通过ajax发送请求,并在其中设置标头,然后我可以登录并看到标头确实已设置

server {
listen 80;

server_name foo.bar;
return 301 https://foo.bar$request_uri;
}

但是,当我尝试将标头记录到节点中时,它们又以空白显示

RewriteEngine on 
RewriteRule ^/?([^/]+)/.+/([^/]+\.php)$ /$1/$2 [END]

日志$.ajax({ headers: { Authorization: localStorage.getItem('t') }, type: 'GET', dataType: 'json', url: `/updatebackground?b=${bg}`, success: function(data) { console.log('yay'); }, complete: function() { console.log(this.headers) } }); 我不确定为什么会发生这种情况,我们将不胜感激

3 个答案:

答案 0 :(得分:0)

大概它与req.headers.authorization一起使用对于它为什么是小写的并没有什么意义,但是无论如何。我将把这个问题留在这里供其他遇到相同问题的人使用。

答案 1 :(得分:0)

在服务器上,您尝试访问 response 对象上的标头,而不是 request 对象上的标头。由于客户端在请求上设置了标头,因此所需的标头将在请求或req上。

如果您将该服务器端代码更改为:

http.createServer(async (req, res) => {
    console.log(req.headers);
});

您将看到请求标头

答案 2 :(得分:0)

这是因为您正在记录 res 标头,而不是 req 标头。

记录请求标头的正确代码是:

http.createServer(async (req, res) => {
    console.log(JSON.stringify(req.headers));
});

res._headers用于设置服务器发送给客户端作为请求答案的响应的标题。