Синхронизация токена CSRF / XSRF в React Native, невозможно прочитать COOKIES - PullRequest
0 голосов
/ 22 апреля 2020

Привет всем, я ищу помощи. У меня есть Expo - React Native приложение, которое использует OpenAPI сгенерированный клиент API с использованием Axios Framework.

API требует проверки CSRF / XSRF.

Tha API отправляет SET-COOK IE Header со значением XSRF-TOKEN и при выполнении запроса POST API требует отправки соответствующих токенов в COOKIES и заголовке X-XSRF-TOKEN.

  • Я убедился, что мой клиент API всегда использует один и тот же экземпляр axios
  • Я использую опцию withCredentials: true (это работает безупречно для файлов cookie), но она не отправляет X-XSRF-TOKEN в заголовке, причина в том, что она не реализована в ax ios: https://github.com/axios/axios/blob/master/lib/adapters/xhr.js#L105
  • Я создал axios перехватчик ответа, который проверяет значение SET-COOK IE XSRF-TOKEN и устанавливает его в качестве заголовка по умолчанию для того же экземпляра ax ios globalAxios.defaults.headers['X-XSRF-TOKEN'] = ...

Все было идеально, потому что это работает, пока приложение не загрузит изображение с того же сервера через ReactNative <Image />, , которое устанавливает новые файлы cookie, которые ax 1040 использует в следующем запросе. В результате создаются несоответствующие значения файлов cookie XSRF-TOKEN и заголовка X-XSRF-TOKEN, поэтому сервер отвечает 403 ...

Я также попытался создать перехватчик запросов и прочитал Файлы cookie перед отправкой запроса для установки того же заголовка, но я не могу получить доступ к значению куки из перехватчика запроса.

Сейчас я совершенно потерян и не вижу какого-либо разумного способа сделать эту работу .

Может ли кто-нибудь бросить мне кость здесь, пожалуйста:)

...