У меня есть такая ситуация: у меня есть проект php, который я создал с нуля, выступая в качестве конечной точки API для клиентского веб-приложения, созданного с помощью React.На данный момент они оба работают локально, php работает на localhost:8000
и реагирует на localhost:3000
.Эта проблема появляется, когда я пытаюсь сделать запрос защищенным токеном с помощью axios.Сгенерированный php сеанс теряется после входа в систему.
Я пытался добавить withCredentials:true
на стороне клиента, а также включить header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
на стороне сервера, как упоминалось здесь во многих ответах, но безуспешно,
Заголовки PHP:
header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With, Set-Cookie, Cookie, Bearer');
Запрос Axios:
return axios({
method: 'GET',
url: LOAD_NOTES_ENDPOINT,
headers: {'Authorization': token, 'Access-Control-Allow-Origin': '*',}
})
.then(response => {
console.log(response.data);
return response;
})
.catch(
(err) => {
return err.response;
}
);
В настоящее время я могу отправить токен генерации при входе в систему и отправить его обратно при попытке доступа к защищенномумаршрут, и это работает нормально, если я сделаю запрос на Почтальон, и это подтвердило, что это строго проблема CORS.Я изо всех сил пытался найти решение в течение 2 дней и открыл все возможные ссылки в Интернете по этой проблеме, но все они предлагают то, что я уже пробовал и не сработало.Я мог бы найти обходной путь, но это сделало бы сервер открытым для атак CSRF, и это то, что я должен предотвратить.
Я что-то здесь упускаю?Кто-нибудь еще нашел решение по этому поводу?