几周前我开始学习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(没有授权头的请求)中工作。
提前谢谢!
答案 0 :(得分:0)
尝试在axios默认设置中设置令牌。 我不确定是否适合您的情况,但在遇到相同问题时对我有用。 由于您使用的是react-native,因此必须将令牌存储在设备上(或第一次从api中检索令牌),因此可以在axios默认设置中设置它,这样就不必在每个axios请求上都设置它。
在拥有令牌后尝试以下操作:
[[1069 15315][0]...]
[[914 15470][0]...]
[[579 15805][0]...]
[[1907 11840][199]...]
[[1947 14437][0]...]
[[1119 9491][122]...]
[[5521 28][10736]...]
[[10454 126][5804]...]
[[8193 67][8065]...]
[[3740 28][12518]...]
[[12423 102][3837]...]
[[16257 127][0]...]
[[3394 0][12987]...]
[[11256 2][5123]...]
[[15506 2][876]...]
[[16383 1][0]...]
[[16383 1][0]...]
[[4506 0][11877]...]
[[16384 0][0]...]
[[13702 0][2682]...]
[[16320 0][64]...]
[[12902 0][3482]...]
[[16384 0][0]...]
[[11353 0][5031]...]
[[16384 0][0]...]
[[16384 0][0]...]
[[16384 0][0]...]
[[1069 15315][0]...]
[[914 15470][0]...]
[[579 15805][0]...]
[[1907 11840][199]...]
[[1947 14437][0]...]
[[1119 9491][122]...]
[[5521 28][10736]...]
[[10454 126][5804]...]
[[8193 67][8065]...]
[[3740 28][12518]...]
[[12423 102][3837]...]
[[16257 127][0]...]
[[3394 0][12987]...]
[[11256 2][5123]...]
[[15506 2][876]...]
[[16383 1][0]...]
[[16383 1][0]...]
[[4506 0][11877]...]
[[16384 0][0]...]
[[13702 0][2682]...]
[[16320 0][64]...]
[[12902 0][3482]...]
[[16384 0][0]...]
[[11353 0][5031]...]
[[16384 0][0]...]
[[16384 0][0]...]
[[16384 0][0]...]
答案 1 :(得分:0)
如果这对以后的任何人有帮助,则在检查服务器日志后,事实证明它确实发送了Authorization标头,但每个标头字段均以小写形式发送。服务器配置为仅接受授权而不接受授权,因此服务器仅返回了一个响应,即未获得该标头。这仅发生在android上。至于为什么我用小写发送它,我仍然不知道。