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

时间:2018-08-29 11:34:00

标签: javascript android reactjs react-native axios

几周前我开始学习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(没有授权头的请求)中工作。

提前谢谢!

2 个答案:

答案 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上。至于为什么我用小写发送它,我仍然不知道。