Http cook ie не отправляется, хотя CORS настроен для разрешения доступа - PullRequest
3 голосов
/ 26 апреля 2020

У меня есть веб-приложение, которому требуется доступ к siteA и siteB (оба находятся в моем ведении). После того, как веб-приложение общается с siteA (и получает повар ie от siteA) и переходит на siteB, ему нужно позвонить с siteA, но запрос http не содержит никакого cook ie, хотя я настроил (через cors) siteA, чтобы доверять siteB и разрешать учетные данные.

Гуглял и читал документы как на SO, так и на других сайтах, но я просто не могу заставить повара ie быть отправленным в запрос HTTP. Вот javascript, который выполняет API-вызов с siteA (работает на странице на siteB, браузер chrome)

await (await fetch("http://siteA/api/1/greeting", {credentials: 'same-origin'})).text()
"Greetings from Spring Boot!"

Вот HTTP-запрос, отправленный вышеуказанным javascript.

GET /api/1/greeting HTTP/1.1
Host: siteA
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4117.2 Safari/537.36
Accept: */*
Origin: https://siteB
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

Вот ответ:

HTTP/1.1 200
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: http://siteB
Access-Control-Allow-Credentials: true
Set-Cookie: jname=joe; HttpOnly
Content-Type: text/plain;charset=UTF-8
Content-Length: 27
Date: Sun, 26 Apr 2020 17:58:48 GMT
Keep-Alive: timeout=60
Connection: keep-alive

Любая помощь или идеи приветствуются!

PS1: Когда я обновляю sh веб-страницу сайта A, я можно видеть (из консоли разработчика), что запрос имеет повара ie.

PS2: попытался использовать credentials: 'include' во фрагменте javascript, он тоже не работал.

1 Ответ

1 голос
/ 26 апреля 2020

Можете ли вы попробовать изменить приведенный выше код на:

await (await fetch("http://siteA/api/1/greeting", {credentials: 'include'})).text()

См. Здесь: https://javascript.info/fetch-crossorigin

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