Как включить файл cookie laravel_session в запросы, сделанные компонентом React? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть приложение React с бэкэндом Laravel, и я хочу, чтобы определенные запросы между ними требовали аутентификации. Насколько я знаю, пользователь идентифицируется cookie-файлом "laravel_session", но я не могу получить к нему доступ из своих компонентов React или сделать так, чтобы fetch / axios автоматически включал его.

Начальная загрузка страницы включает в себя следующее в заголовках ответов:

Set-Cookie: XSRF-TOKEN = {...}; истекает = вт, 02 июля 2019 14:14:42 по Гринвичу; Max-Age = 7200; путь = /

Set-Cookie: laravel_session = {...}; истекает = вт, 02 июля 2019 14:14:42 по Гринвичу; Max-Age = 7200; Путь = /; HttpOnly

Я попытался использовать react-cookie, который может нормально обращаться к cookie XSRF-TOKEN, но он не видит laravel_session.

Я попытался установить credentials:true с получением:

   const fetchOptions = {
        method: 'POST',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
        },
        credentials: 'include',
        body: JSON.stringify({session:longSession}),
    };

    const req = fetch(fetchUrl, fetchOptions).then((response) => {
        console.log(response.json())
    })

... и withCredentials:true с аксио:

    axios.post(fetchUrl,
        JSON.stringify({session:longSession}),
        {withCredentials:true}
    ).then(function (response) {
        console.log(response);
    })

альтернатива:

    axios(fetchUrl, {
        method: "POST",
        data: JSON.stringify({session:longSession}),
        withCredentials: true
    }).then(function (response) {
        console.log(response);
    })

Комментирование / добавление деталей credentials и withCredentials не приводит к включению файлов cookie в запрос (даже легко обнаруживаемый XSRF-TOKEN - который отправляется в отдельном заголовке).

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


РЕДАКТИРОВАТЬ: После некоторого дальнейшего чтения, кажется, что httponly куки не могут быть доступны с помощью javascript. Я предполагаю, что это должно предотвратить что-то вроде межсайтового скриптинга, и мне не следует это менять.

Мой вопрос сейчас заключается в том, не вызовет ли изменение этого флага какие-либо проблемы с безопасностью, и может ли кто-нибудь придумать какую-либо альтернативу для аутентификации моих запросов, сделанных из компонентов React.

...