У меня есть приложение 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.