React Native - Android不会在请求中发送授权标头

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

几周前我开始学习React Native,我一直在尝试创建一个我网站的移动应用程序。唯一的问题是,在Android上,仅在Android上,包含Authorization标头的网络请求不会通过。我正在使用Axios进行网络请求。这是其中一个请求的示例。该函数在componentDidMount中调用。

axios.get('https://exampleurl.com', {headers: {
        'Authorization': 'Bearer ' + value}}) 
        .then(response => {
          console.log(response);
            Alert.alert("There is a response");
            this.setState({userData: response.data.data[0]});
         })
        .catch((error) => {
            Alert.alert("There is an error", error.message);
            that.setState({accessToken: ''});
        });

我得到的答复是没有发送访问令牌。是的我确定该值不为空。该代码适用于IoS和浏览器。有趣的是呼叫通过并且如果调试器打开则工作正常。有没有理由只为Android不起作用?

服务器端是否需要配置接收Android请求?服务器托管在Amazon S3上。有什么东西可能在我身边需要配置吗?所有其他网络请求都在Axios中工作(没有授权标头的那些)。

先感谢您!

javascript android reactjs react-native axios
2个回答
0
投票

尝试在axios默认设置中设置令牌。我不确定它是否适合你的情况,但是当我遇到同样的问题时,我会为我工作。由于您使用的是react-native而且您必须在设备上存储令牌(或者是第一次从api中检索它),您可以在axios默认设置中设置它,这样您就不必在每个axios请求中设置它。

当你有你的令牌时试试这个:

axios.defaults.headers.common['Authorization'] = 'Bearer ' + value;

0
投票

如果这有助于将来的任何人,在检查服务器日志之后,事实证明它实际上发送了Authorization标头,除了每个标头字段都以小写形式发送。服务器配置为仅接受授权而不是授权,因此服务器只返回一个没有获得该标头的响应。这只发生在android上。至于为什么android以小写形式发送它我仍然不知道。

© www.soinside.com 2019 - 2024. All rights reserved.