Отправка файлов cookie в js для получения запроса POST или GET на сервере с поддержкой cors - PullRequest
0 голосов
/ 16 января 2020

Ссылки на сильфонные коды и ссылки на запросы содержат комментарии, которые были добавлены в SO, чтобы объяснить мое понимание исходных запросов, а код не содержит комментариев.

Мне известен стандарт использования заголовков аутентификации для запросов на выборку. то, что мне нужно сделать, это получить повар ie, который сервер A устанавливает на сервер B без необходимости передавать его через javascript.

У меня есть сервер A: http://127.0.0.1: 8080 содержит указатель. html

указатель. html при приготовлении пищи ie При взгляде на банку содержится повар ie cookie details

Я также есть сервер B: http://0.0.0.0: 8081 . <- duno, если соответствующий порт и ip отличаются </p>

http://127.0.0.1: 8080 / index. html делает следующий запрос

let url = "http://0.0.0.0:8081/write" //this url is o a different server so certain headers are needed

  let cookies = document.cookie
  console.log(cookies) //this logs the cookie so I know its defo there
  let otherPram= {
    credentials: 'include',   //this is what I need to tell the browser to include cookies
    method: "GET"

  };

  fetch(url, otherPram)

После запроса Сделано, что браузер делает вызов параметров http://0.0.0.0: 8081 / запись с ответом:

access-control-allow-credentials: true
access-control-allow-headers: accept, authorization, content-type, origin, x-requested-with, access-control-allow-credentials, cookie, access-control-allow-origin
access-control-allow-methods: GET, POST, OPTIONS
access-control-allow-origin: http://127.0.0.1. //also tried this with http://127.0.0.1:8080
access-control-expose-headers: Cache-Control, Content-Language, Content-Type, cookie
access-control-max-age: 600
connection: keep-alive
content-length: 0
date: Thu, 16 Jan 2020 08:22:19 GMT

, однако запрос не содержит куки.

Насколько мне известно, он должен отправить куки с запросом на получение.

Ответы [ 2 ]

0 голосов
/ 17 января 2020

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

Наряду со всеми свойствами cors и включением выборки. Для настройки cook ie должен быть задан домен.

Set-Cookie: myCookie=value; domain=root.com

Все дочерние домены root .com будут совместно использовать эту спецификацию c cook ie.

0 голосов
/ 16 января 2020

Файлы cookie принадлежат источнику.

  let cookies = document.cookie
  console.log(cookies) //this logs the cookie so I know its defo there

Это указывает на наличие файлов cookie для источника документа HTML.

После запрос сделан, браузер делает вызов опций http://0.0.0.0: 8081 / write

Итак, вы делаете перекрестный запрос.

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


Если вы хотите отправить файлы cookie на http://0.0.0.0: 8081 / Затем вам нужно сделать запрос к http://0.0.0.0: 8081 / и использовать его в заголовке Set-Cookie в ответе, чтобы установить их в первую очередь. Браузер не устанавливает cookie-файлы с :8080 на :8081, поскольку они не являются файлами cookie :8081.


Обычно веб-службы используют заголовок * Authorization. вместо печенья.

  let otherPram= {
    headers: {
      "Authorization": "Bearer SomeToken"
    },
    credentials: 'include',   //this is what I need to tell the browser to include cookies
    method: "GET"
  };

В стороне: я удалил "content-type": "application/json". Вы делаете запрос GET , поэтому в запросе нет содержимого для указания типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...