Я пытаюсь создать сайт входа в систему на домене "example.com", который отправляет Ajax-запрос в домен "other_domain.com", и, если учетные данные в порядке, этот запрос отправляет куки-файл сессии.После этого я хочу перенаправить на сайт «other_domain.com» и войти в систему.
У меня есть решение, которое работает на IE11, Edge, Chrome, но не на Firefox , потому чтоFirefox не устанавливает возвращенный файл cookie, когда я перенаправляю на сайт «other_domain.com».
Это код запроса ajax:
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.open('POST', 'https://other_domain.com/login', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function () {
if (this.status == 200 && this.readyState == 4) {
window.location.replace("https://other_domain.com/app");
}
};
xhr.send(JSON.stringify(payload));
Я вижу в каждом браузере запрос OPTIONSуспешно, а также сообщение AJAX возвращает 200 OK в каждом браузере, если учетные данные верны.
Возвращенный файл cookie имеет следующие значения:
CreationTime: "Fri, 28 Sep 20018 12:48:49 GMT"
Domain: "other_domain.com"
Expires: "Session"
HostOnly: true
HttpOnly: true
LastAccessed: "Fri, 28 Sep 20018 12:48:49 GMT"
Path: "/"
Secure: true
sameSite: "Lax"
Дополнительная информация после пометки как дубликат:
Я вижу в консоли разработчика, что по OPTIONS и запросу POST из кода выше возвращаются следующие заголовки:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://example.com
Я вижу Set-Cookieзаголовок с правильным значением в ответе в Firefox, но cookie не устанавливается после перенаправления на other_domain.com.Также мой Firefox настроен на «Принимать сторонние куки и данные сайта» - «всегда»