0

我正在开发一个 NodeJS+Express 应用程序。我无法接收传入的标头。

我期待来自另一个服务的名为“authKey”的标头。但是当我打印这个时我变得不确定。参考下面的代码:

const authKey = req.header('auth-key');
console.log(`authKey:${authKey}`);

输出:

authKey:undefined

我也尝试使用 npm cors 包,但结果是一样的。

4

2 回答 2

0

这是因为跨域限制默认情况下所有自定义标头都被阻止。'authKey' 未在安全标头列表中定义。

1.使用预定义的标题之一:

请参阅此以获取安全标头列表及其用途,以便您可以使用其中一个安全标头来匹配您的目的。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

2.使用CORS:

跨域资源共享允许我们放松应用于 API 的安全性。

// nodeJS code
var express = require('express');
var cors = require('cors');
var app = express();
app.use(cors());

详细了解为什么跨域限制会阻止自定义标头为什么 CORS 默认会阻止自定义标头?

施加默认限制的不是“CORS”。相反,这些限制只是浏览器遵循的默认同源策略的一部分

于 2021-12-01T05:20:38.837 回答
0

有两种方法可以从请求中获取标头

  1. console.log(JSON.stringify(req.headers));

这将打印请求标头中存在的所有标头键值。

  1. const auth = req.headers['auth-key'];

否则您可以使用它来获取特定的标头值。标头存储在 JavaScript 对象中,标头字符串作为对象键。

于 2020-08-22T12:05:13.583 回答