反应本机0.50.3授权标头未发送

问题描述 投票:0回答:2

我使用react-native 0.50.3将令牌认证的请求发送到我的后端,遗憾的是,fetch的“授权”部分不是由fetch发送的。

我的代码如下:

async componentDidMount() {

    var mytoken = await AsyncStorage.getItem('token');
    fetch('http://myserver:8000/home', {
      method: 'GET',
      headers: {
        'Accept': 'application/json',
        'Origin': '',
        'Content-Type': 'application/json',
        'authorization': 'Bearer ' + mytoken
      }
    })
    .then((response) => response.json())
    .then((content) => {
      this.state.user = content.user;
    })
    .done();
}

在我的服务器端,wireshark跟踪显示授权不在请求标头中:

Hypertext Transfer Protocol
    GET /home/ HTTP/1.1\r\n
    Host: 10.150.21.124:8000\r\n
    Content-Type: application/json\r\n
    Origin: \r\n
    Accept: application/json\r\n
    User-Agent: Expo/2.3.0.1012011 CFNetwork/893.14 Darwin/17.3.0\r\n
    Accept-Language: en-us\r\n
    Accept-Encoding: gzip, deflate\r\n
    Connection: keep-alive\r\n
    \r\n
    [Full request URI: http://10.150.21.124:8000/home/]
    [HTTP request 1/1]
    [Response in frame: 2326]

当然,我得到服务器未经授权的401。

我的后端是安装了CORS的django API,CORS_ORIGIN_ALLOW_ALL = TrueALLOWED_HOSTS = ['*']

我的开发框架元素的版本如下:

  • asl 4.6.1
  • 节点pc.0
  • react-native-cli 2.0.1

一个重要的更新,我尝试使用react-native的请求就像邮递员的魅力一样。所以问题不在服务器端。

谢谢您的帮助。

亚历克斯。

django react-native unauthorized
2个回答
0
投票

在url地址中尝试使用尾部斜杠:

fetch('http://myserver:8000/home/', {
      method: 'GET',
      headers: {
        'Accept': 'application/json',
        'Origin': '',
        'Content-Type': 'application/json',
        'authorization': 'Bearer ' + mytoken
      }
    })
    .then((response) => response.json())
    .then((content) => {
      this.state.user = content.user;
    })
    .done();

0
投票

通过在请求对象上添加尾部斜杠,Pooya的答案对我有用。奇怪的是因为它对postman工作没有尾随斜线因此调试的挑战。 P.S我也使用相同的堆栈,django,django REST框架(DRF)反应原生

fetch('http://mywebsite.com/posts/', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer ' + token
  }
})
© www.soinside.com 2019 - 2024. All rights reserved.