授权标头在fetch中无效 - React Native

时间:2018-03-17 16:52:47

标签: ios xcode react-native http-headers authorization

我正在向我的计算机(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(未授权),因为很明显没有授权标头。为什么它不包含在我的请求中?

2 个答案:

答案 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())