Set-Cookie заголовок возвращается, но cookie не устанавливается - PullRequest
0 голосов
/ 22 октября 2018

Я делаю XMLHttpRequest для API, который должен устанавливать cookie после проверки параметров.Все работает правильно, и возвращается заголовок Set-Cookie, но браузер не устанавливает cookie.Пробовал в Firefox 62.0.3 и Chrome 68.0.3440.84.Мой флаг withCredentials имеет значение true.

Мой XMLHttpRequest выглядит следующим образом -

var invocation = new XMLHttpRequest();
var url = 'http://127.0.0.1/auth';
var invocationHistoryText;
var body = '{"email":"xxxx@gmail.com","password":"xxx@test"}';

function callOtherDomain(){
    if(invocation)
    {
        invocation.open('POST', url, true);
        invocation.withCredentials = "true";
        invocation.setRequestHeader('Content-Type','application/json');
        invocation.onreadystatechange = handler;
        invocation.send(body); 
    }
    else
    {
        invocationHistoryText = "No Invocation TookPlace At All";
        var textNode = document.createTextNode(invocationHistoryText);
        var textDiv = document.getElementById("textDiv");
        textDiv.appendChild(textNode);
    }
}

Мой предпечатный запрос также работает нормально.Ниже приведены его заголовки:

Preflight Request-

OPTIONS /auth HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Origin: http://xxx.000webhostapp.com
DNT: 1
Connection: close

Preffight Response -

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: http://xxx.000webhostapp.com
Vary: Origin
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: Origin,X-Requested-With,Content-Type,Accept
Content-Length: 0
Date: Mon, 22 Oct 2018 01:10:21 GMT
Connection: close

Post Request -

POST /auth HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://xxx.000webhostapp.com/yyy.html
Content-Type: application/json
Content-Length: 57
Origin: http://xxx.000webhostapp.com
DNT: 1
Connection: close

{"email":"xxx@gmail.com","password":"xxx@test"}

Post Response -

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: http://xxx.000webhostapp.com
Vary: Origin
Access-Control-Allow-Credentials: true
Set-Cookie: coo=aa; Expires=Wed, 23 Oct 2018 07:28:00 GMT; HttpOnly
Content-Type: application/json; charset=utf-8
Content-Length: 368
ETag: W/"170-w78Ss5DUummozAsRbo5JsjFDoGI"
Date: Mon, 22 Oct 2018 01:10:22 GMT
Connection: close

{"data":{"firstName":"aaaa","lastName":"bbbb"},"Token":"ttt"}

Но этот возвращенный файл cookie не устанавливается браузером.

Я воспользовался более ранними предложениями - Файлы cookie на локальном хосте с явным доменом , Как исправить установку файлов cookie для субдомена в JSP? , Установить-Заголовок cookie не имеет никакого эффекта: об использовании файлов cookie и CORS, в том числе для localhost («Access-Control-Allow-Headers») .Исходя из этого, я удалил номер порта из моего запроса (на котором размещен мой сервер на 80), а также попытался перевести мой сервер на онлайновый HTTPS-сайт, но ничего не получилось.

Любая помощь будет принята с благодарностью.

...