Inte rnet завален этим типом запроса, но я спрашиваю его снова, потому что все ответы, кажется, около 2014 года. У меня есть похожие проблемы, но ни одно из старых исправлений не работает сейчас, поэтому я ' Я не уверен, что что-то новое понадобится в 2020 году (и далее).
Я пытаюсь позвонить с domainA.com
на domainB.com
. Пользователь аутентифицирован на domainB.com
, который хранится в Cook ie в этом домене.
У меня есть административный доступ к обоим доменам, поэтому я могу вносить изменения на любом конце по мере необходимости.
Вот мой jQuery ajax звонок, используемый на domainA.com
сайте:
$.ajax({
url: "https://domainB.com/endpoint",
xhrFields: {
withCredentials: true
}}
)
Я также пробовал дополнительные свойства, такие как:
-
crossDomain: true
dataType: "json"
Сайт domainB.com
получает запрос, , но без файлов cookie по запросу .
заголовки запроса :
host -> domainB-host
connection -> close
accept -> */*
sec-fetch-dest -> empty
user-agent -> Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
dnt -> 1
origin -> https://domainA.com
sec-fetch-site -> cross-site
sec-fetch-mode -> cors
referer -> https://domainA.com/
accept-encoding -> gzip, deflate, br
accept-language -> en-US,en;q=0.9
Вкл. domainB.com
Я также устанавливаю следующие заголовки ответа :
Access-Control-Allow-Origin: https://domainA.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: Origin
Есть идеи, почему файлы cookie domainB.com
не передаются в запросе от domainA.com
, когда CORS (я думаю) правильно (я думаю) настроен?
ОБНОВЛЕНИЕ 1 Это работает в Firefox, но не в Chrome (в Ма c). Ранее я тоже тестировал в Firefox, но он не работал. С указанными выше конфигурациями он действительно работает в Firefox.