我正在请求一个API,我有我的电脑(192.168.1.132)与反应本机从我的手机(在同一网络):
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))
})
但是我正在嗅探请求,它没有授权标头(我放的任何其他标头都会出现,但不会出现授权)。在Xcode中,我启用了“允许任意加载”。所以我的API返回401(未授权),因为显然没有授权标头。为什么它不包含在我的请求中?
您的url上需要一个尾部斜杠来附加标题。正如评论中指出的,让凭据显示“包含”。如果您的API在预检中附加了CSRF令牌,那么它也将包含该cookie。
首先,我只是在我的Node ExpressAPI中使用以下内容:
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();
});
它在react应用程序中无法正常工作,但它可以直接从失眠请求中工作,然后我需要添加以下内容:
const cors = require('cors');
app.options('*', cors())