我正在开发一个 NodeJS+Express 应用程序。我无法接收传入的标头。
我期待来自另一个服务的名为“authKey”的标头。但是当我打印这个时我变得不确定。参考下面的代码:
const authKey = req.header('auth-key');
console.log(`authKey:${authKey}`);
输出:
authKey:undefined
我也尝试使用 npm cors 包,但结果是一样的。
我正在开发一个 NodeJS+Express 应用程序。我无法接收传入的标头。
我期待来自另一个服务的名为“authKey”的标头。但是当我打印这个时我变得不确定。参考下面的代码:
const authKey = req.header('auth-key');
console.log(`authKey:${authKey}`);
输出:
authKey:undefined
我也尝试使用 npm cors 包,但结果是一样的。
这是因为跨域限制默认情况下所有自定义标头都被阻止。'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”。相反,这些限制只是浏览器遵循的默认同源策略的一部分
有两种方法可以从请求中获取标头
console.log(JSON.stringify(req.headers));
这将打印请求标头中存在的所有标头键值。
const auth = req.headers['auth-key'];
否则您可以使用它来获取特定的标头值。标头存储在 JavaScript 对象中,标头字符串作为对象键。