Fetch не отправляет безопасный cookie во время междоменного запроса POST - PullRequest
0 голосов
/ 28 августа 2018

Я не могу получить этот запрос на выборку для правильной отправки файла cookie (идентификатор сеанса, который успешно сохраняется на вкладке приложения браузера Chrome в файлах cookie). Файл cookie представляет собой созданную бутылку python, файл cookie beaker.session.id, помеченный как безопасный.

enter image description here

У меня есть свой бутылочный сервер, настроенный для обработки запросов CORS и файлов cookie, со следующими возвращаемыми заголовками:

Access-Control-Allow-Credentials →true
Access-Control-Allow-Headers →Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token, Authorization
Access-Control-Allow-Methods →PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Origin →http://localhost:3000

Мой код JavaScript:

 fetch("https://#.#.#.#/session-status", 
    {
        credentials: "include",
        method: "post",
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({
            "id": id
        }),
    }).then(res => {
        return res.json()

Что может быть причиной этой проблемы? Предварительный запрос OPTIONS успешно выполняется с 200 OK, но запрос POST не отправляет необходимые заголовки, которые включают идентификатор сеанса.

1 Ответ

0 голосов
/ 28 августа 2018

ОБНОВЛЕНИЕ:

Оказывается, проблема была в том, что SameSite: "Lax" часть куки. В бутылке по умолчанию включен SameSite: «Lax», но вам нужно вручную установить его на «Нет», чтобы не отправлять атрибут. SameSite: «Lax» не позволяет отправлять небезопасные запросы (например, POST) из другого домена в соответствии с этим RFC в разделе 4.3.

...