Firefox не устанавливает Cookie, полученные с запросом XHR CORS - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь создать сайт входа в систему на домене "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 настроен на «Принимать сторонние куки и данные сайта» - «всегда»

1 Ответ

0 голосов
/ 24 октября 2018

У меня была такая же проблема.Посмотрите на Set_Cookie, имеет ли он атрибут SameSite = lax.Если это так, присвойте этому свойству значение None при установке файла cookie на сервере.В .NET при создании файла cookie у вас есть этот параметр, слабый, строгий или отсутствует.

https://docs.microsoft.com/en-us/dotnet/api/system.web.httpcookie.samesite?view=netframework-4.7.2

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