React Native iOS не добавляет заголовок авторизации, работает на Android

У меня проблема, из-за которой заголовок Authorization не добавляется в запрос на iOS, он работает на Android.

Сначала я подумал, что это axios, http-клиент, но потом я переключился на простое использование fetch, чтобы попробовать, все равно не работает.

На экране есть обработчик для отправки сообщения:

const handleSendPress = async () => {
  await postContact(textInput);
}

И функция запроса:

export const postContact = async (message: string) => {
  // await axiosInstance.post(`${API_URL}/contact`, {
  //   message,
  // });
  await fetch(`${API_URL}/contact`, {
    method: 'POST',
    body: JSON.stringify({
      message,
    }),
    headers: {
      'Content-Type': 'application/json',
      Accept: 'application/json',
      Authorization: 'Bearer [JWT TOKEN]',
    },
  });
};

где я закомментировал axios и жестко закодировал заголовок Authorization.

Это работает на Android, но не работает на iOS, где сервер жалуется на отсутствие заголовка Authorization в запросе.

Я не понимаю, есть идеи?

Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
0
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оказывается, в iOS есть несколько зарезервированных HTTP-заголовков, и Authorization — один из них, https://developer.apple.com/documentation/foundation/nsurlrequest.

Если вы установите значение для одного из этих зарезервированных заголовков, система может проигнорировать установленное вами значение, перезаписать его собственным значением или просто не отправить его.

Ключевое слово там быть может, поэтому обычно оно терпит неудачу, но в некоторых случаях проходит.

Вероятно, есть какой-то способ настроить это, но в итоге я просто изменил заголовок, который использую, на X-Authorization.

Другие вопросы по теме