Получает только один файл cookie при получении ответа на Android, но не на iOS - PullRequest
0 голосов
/ 07 ноября 2018

Когда я отправляю запрос POST на мой сайт, все это работает на iOS. Набор файлов cookie для получения ответа содержит все файлы cookie, необходимые для продолжения работы и выполнения будущих запросов. Проблема в Android. Я получаю только один cookie в set-cookie, хотя их больше. Кажется, что это обрезается, и я не могу получить доступ к необработанному ответу.

Мой код получения:

    const myRequest = new Request('MYURL', 
      {method: 'POST', body: parameters,
         headers: {
             "Referer": 'MYURL.com/login',
             'Origin': 'MYURL',
             'Content-Type': 'application/x-www-form-urlencoded'
    }});
    fetch(myRequest)
      .then(
        function(response) {
          try {
            console.log("JSON RESPONSE: " + response.json());
            console.log(JSON.stringify(response, null, 2));

            console.log(response.headers.get('Content-Type'));
            console.log(response.headers.get('Date'));

          } catch(err) {
            console.log("ERROR: " + err);
          }
        }
    )
    .catch(function(err) {
        console.log('Fetch Error', err);
    });

Я знаю, что android правильно вошел в систему, потому что сервер перенаправляет меня на страницу меню, а также распознает личный идентификатор клиента.

Вот ответ от iOS (тот, который работает):

"set-cookie": "session = CENSORED; домен = .MYURL; путь = /; HttpOnly, clientID = 123; истекает = чт, 07-ноябрь-2019 09:27:20 GMT; домен = .MYURL; путь = /»,

Идеальный ответ. Все работает.

Вот ответ от андроида:

"set-cookie": "clientID = 123; срок действия = чт, 07-ноябрь-2019 09:34:00 по Гринвичу; домен = .MYURL; путь = /",

Я пытался понять проблему несколько дней, но безрезультатно. Я пытался проверить файлы cookie без httponly, чтобы убедиться, что это ошибка, но нет.

Надеюсь, что некоторые опытные пользователи-носители могут пролить свет на эту проблему. Я не испытывал этого раньше, когда создавал нативные приложения для Android и IOS. Только с Реакцией-родной. : - (

Я надеюсь заставить это работать, так как я бы предпочел не использовать нативный код для этой небольшой части.

РЕДАКТИРОВАТЬ: протестирована функция выборки с API Reddit входа и возникает та же проблема. Только 1 файл cookie в ответном наборе-Cookio на Android, но все файлы cookie показаны на iOS.

1 Ответ

0 голосов
/ 13 ноября 2018

Посмотрите официальные документы React Native и MDN:

  1. https://facebook.github.io/react-native/docs/network
  2. https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

Проблема в том, что fetch по умолчанию не отправляет и не получает файлы cookie с сервера. Так что вы должны включить его, добавив credentials. И есть несколько библиотек, которые могут помочь вам управлять куки:

...