React Native - Android не отправляет заголовок авторизации в запросе - PullRequest
0 голосов
/ 29 августа 2018

Я начал изучать 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 (без заголовка авторизации).

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Если это кому-нибудь поможет в будущем, после проверки журналов сервера выясняется, что он действительно отправил заголовок авторизации, за исключением того, что каждое поле заголовка было отправлено в нижнем регистре. Сервер был настроен на прием только авторизации, а не авторизации, поэтому сервер просто возвратил ответ, что он не получил этот заголовок. Это случилось только на Android. Относительно того, почему Android отправляет его в нижнем регистре, я до сих пор не знаю.

0 голосов
/ 29 августа 2018

Попробуйте установить токен в axios по умолчанию. Я не уверен, подходит ли это вашему делу, но сработало для меня, когда у меня возникла та же проблема. Поскольку вы используете реагирующую нативу и вам необходимо хранить токен на устройстве (или получать его из вашего API в первый раз), вы можете установить его по умолчанию в axios, чтобы вам не приходилось устанавливать его при каждом запросе axios.

попробуйте, когда у вас был токен:

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