繁体   English   中英

React Native-Android在请求中不发送Authorization标头

[英]React Native - Android doesn't send Authorization header in request

几周前我开始学习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: ''});
        });

我得到的答复是没有发送访问令牌。 是的,我确定该值不为null。 该代码可在IoS和浏览器中使用。 有趣的是,如果打开了调试器,则调用可以通过并且可以正常工作。 有什么原因为什么只有Android无法使用?

服务器端是否需要配置一些东西来接收Android请求? 该服务器托管在Amazon S3上。 也许我这边需要配置一些东西? 所有其他网络请求都可在Axios(没有授权头的请求)中工作。

先感谢您!

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

拥有令牌时请尝试以下操作:

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

如果以后对任何人有帮助,则在检查服务器日志后,事实证明它确实发送了Authorization标头,但每个标头字段均以小写形式发送。 服务器配置为仅接受授权而不接受授权,因此服务器仅返回了一个响应,即未获得该标头。 这仅发生在android上。 至于为什么android以小写形式发送它,我仍然不知道。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM