我正在向我的计算机(192.168.1.132)上的API发出请求,并通过我的手机(在同一网络中)进行本地反应:
fetch('http://192.168.1.132:8000/test', {
method: 'GET',
headers: { 'Authorization': 'Bearer 4uFPmkP5326DXcRuHDKjRRrmhdeIBJ'},
credentials: 'same-origin'
})
.then((response) => response.json())
.then((responseJson) => {
console.log('RESPONSE: ' + JSON.stringify(responseJson))
})
但我正在嗅探请求并且它没有Authorization标头(我放的任何其他标题都会出现,但不是授权)。在Xcode中,我启用了“AllowArbitraryLoads'”。所以我的API返回401(未授权),因为很明显没有授权标头。为什么它不包含在我的请求中?
答案 0 :(得分:5)
您的网址上需要一个尾部斜杠才能附加标题。正如评论中所指出的,让凭据说'包含'。如果您的API在飞行前附加了CSRF令牌,那么它也将包含该Cookie。
答案 1 :(得分:0)
首先,我只是在 Node Express API 中使用了以下内容:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authentication");
next();
});
在反应应用中无法正常工作,但在Insomnia的直接要求下有效,然后我需要添加以下内容:
const cors = require('cors');
app.options('*', cors())