Как установить XSRF-TOKEN в заголовке запроса API Angular 11 в Laravel 8?

Я интегрирую Angular (11) frontend в приложение Laravel 8. Для выполнения запросов к API пользователи входят в систему. Каждый раз, когда внешний интерфейс Angular делает запрос к внутреннему API, я получаю следующую ошибку:

Status Code: 401 Unauthorized

Я настроил VueJs frontend для тестирования одного и того же URL-адреса конечной точки API, и VueJs может достичь конечной точки API и получить ответ от серверной части. Когда я сравниваю Request Headers запроса API, сделанного VueJS, с запросом, сделанным Angular 11, я вижу, что Request Headers из Angular 11 не имеет X-XSRF-TOKEN. Поэтому я думаю, что это причина, по которой я получаю вышеуказанную ошибку.

Ниже показано, как VueJs и AXIOS настраиваются в Laravel 8, чтобы X-XSRF-TOKEN было в файле API Request Headers.

window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
const token = document.head.querySelector('meta[name="csrf-token"]');

if (token) {
    window.axios.defaults.headers.common["X-CSRF-TOKEN"] = token.content;
}

Как установить X-XSRF-TOKEN или X-CSRF-TOKEN в API Request Headers, делая Angular 11 в Laravel 8?

Примечание. Внешний интерфейс Angular 11 и внешний интерфейс VueJs интегрированы на веб-странице внешнего интерфейса приложения Laravel 8, поэтому они находятся в одном домене. Так что думаю laravel-cors пакет не нужен.


person O Connor    schedule 12.04.2021    source источник
comment
Отвечает ли это на ваш вопрос? https://stackoverflow.com/questions/46040922/angular4-httpclient-csrf-does-not-send-x-xsrf-token   -  person JohnD    schedule 12.04.2021
comment
Я не знаю, где найти значение для headerName . HttpClientXsrfModule.withOptions({headerName: 'Что здесь должно быть??' })   -  person O Connor    schedule 12.04.2021


Ответы (1)


Чтобы получить токен XSRF, вы должны использовать немодифицирующий HTTP-метод, содержащий заголовок X-CSRF-Token со значением Fetch. Токен выдается только в том случае, если пользователь уже прошел аутентификацию. Если пользователь не прошел аутентификацию, любой запрос с изменяющим методом отклоняется этим фильтром. Для получения дополнительной информации о защите XSRF нажмите здесь!

person ImVk    schedule 12.04.2021
comment
Отправка токена XSRF: 1. Вы можете создать новый маршрут для отображения токена csrf с помощью вашего контроллера с помощью функции ниже. ( ... 2. Выберите вкладку Body в почтальоне, а затем выберите x-www-form-urlencoded. 3. Скопируйте токен и вставьте в почтальон в качестве значения ключа с именем _token. 4. Выполните свой почтовый запрос на своем URL-адресе. /Конечная точка. - person ImVk; 12.04.2021
comment
Я не могу следить за вами, почему вы говорите об использовании почтальона. У меня уже есть работающая конечная точка API, нет необходимости использовать Postman для проверки конечной точки URL-адреса API. Я хочу знать, как установить X-XSRF-TOKEN в заголовках запросов API в Angular 4, 5, 9 или 11. - person O Connor; 14.04.2021