我在浏览器中使用Rest和fetch()
API发布带有x-api-key
头的数据以进行授权。我用Postman和curl
测试了API,它运行得很好:
curl --header "X-API-KEY: my-api-key" -d "my-request-body" -X POST http://localhost:8081/submit
但是,它不适用于fetch api。在Chrome上
const response = await fetch(url, {
method: 'POST',
mode: 'no-cors',
cache: 'no-cache',
headers: {
'x-api-key': 'my-api-key',
'Accept': 'text/plain',
'Content-Type': 'text/plain'
},
redirect: 'follow',
referrerPolicy: 'no-referrer',
body: 'my-request-body'
});
我无法从请求中检索API密钥。在我的特快路由器处理程序中:
router.post('/submit', cors(), async (req,res, next) => {
const apiKey = req.header('x-api-key');
console.log(apiKey) // THIS GIVES undefined
});
在x-api-key
req.headers
对象中也存在No 标头。
发布于 2021-12-20 06:31:12
好的。经过一段时间的挣扎之后,我发现了导致它的问题.mode: 'no-cors'
自始至终都是造成它的原因。只需将其设置为mode: 'cors'
,由于某种原因,您就可以开始了。
发布于 2021-12-19 15:02:03
我看到了一个问题,不确定这是否是造成问题的原因,但是您已经在获取头中忘记了,
,可能在添加,
之后尝试。
https://stackoverflow.com/questions/70412517
复制相似问题