Как сделать так, чтобы запросы Relay включали файл cookie?

У меня есть ретранслятор настройка из учебника Howtographql. :

const network = Network.create((operation, variables) => {
  // 4
  return fetch(GRAPHQL_URL, {
    method: 'POST',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
    },
    credentials: 'same-origin', // <- added it to enable cookies, but it's a probably a default option anyway
    body: JSON.stringify({
      query: operation.text,
      variables,
    }),
  }).then(response => {
    return response.json();
  });
});

Я хочу, чтобы Relay прикреплял файл cookie к своему запросу, но он не работает, даже когда я добавляю credentials: 'same-origin'. Вот похожая проблема на GitHub (хотя она больше о компонент авторизации, поэтому этот вопрос должен иметь простое решение).


person A. Karnaval    schedule 09.07.2019    source источник
comment
куки привязаны к браузеру через путь, домен, дату истечения срока действия и статус https, что означает, что на бэкэнде вы устанавливаете куки через ответ (сервер к браузеру), а затем, когда любой запрос, сделанный из внешнего интерфейса к API/бэкенду, будет включен куки по умолчанию, затем проверьте куки, чтобы сделать всю свою магию   -  person Dean Van Greunen    schedule 09.07.2019
comment
@DeanVanGreunen это имеет смысл, но я на 100% уверен, что клиент отправляет запрос с файлом cookie на сервер.   -  person A. Karnaval    schedule 09.07.2019
comment
Возможный дубликат Cookies не передается мобильный браузер в запросе graphql через relayjs   -  person Ouroborus    schedule 09.07.2019
comment
@Ouroborus, это решение для Relay, но здесь я использую Relay Modern.   -  person A. Karnaval    schedule 09.07.2019
comment
@A.Karnaval A.Karnaval Я не вижу, чтобы credentials функционировало по-разному между ними. Вы пробовали credentials:'include', как следует из ответа?   -  person Ouroborus    schedule 09.07.2019
comment
@Ouroborus Я сделал: доступ к извлечению по адресу 'localhost:4000' из источника '0.0.0.0:3005" заблокирован политикой CORS: ответ на предварительный запрос не проходит проверку управления доступом: значение параметра "Доступ- Заголовок Control-Allow-Origin в ответе не должен быть подстановочным знаком «*», если режим учетных данных запроса «включить».   -  person A. Karnaval    schedule 09.07.2019
comment
@A.Karnaval Исходя из этого, проблема не в файлах cookie, а в запросах. Похоже, вам нужно установить заголовок Access-Control-Allow-Origin в ответах сервера (как вы это делаете, зависит от сервера) или настроить соответствие доменов и портов, чтобы CORS не запускался. Что касается same-origin, я думаю, что он тоже не работает из-за несоответствия домена.   -  person Ouroborus    schedule 09.07.2019
comment
@Ouroborus спасибо за предложение, но он по-прежнему не передает файл cookie (если я запускаю Chrome без защиты, чтобы избежать ошибок CORS). Я не очень понимаю ваше предложение: AFAIK рабочий процесс - это клиентский запрос (файл cookie присутствует) -> интерфейс -> запрос реле -> сервер graphql (файл cookie отсутствует на этом этапе, если я распечатаю весь запрос)   -  person A. Karnaval    schedule 09.07.2019
comment
@A.Karnaval установите это расширение Редактировать этот файл cookie в Chrome   -  person Dean Van Greunen    schedule 10.07.2019
comment
Вы решили это? Возникла похожая проблема :(   -  person Will Cowan    schedule 19.11.2020