У меня есть фреймворк Laravel с VueJS.Этот веб-интерфейс размещен на локальном сервере xampp на портах 80,443 с настроенным URL-адресом "http://test.net".. Я отправляю запросы API из приложения VueJS с помощью axios в серверную часть Django, где я установил рабочую среду Rest (доступную через Postman).внутренний сервер http://127.0.0.1:8000. Поскольку серверы разные, я установил пакет django-cors-headers и настроил файл settings.py для включения этого пакета, а также для промежуточного программного обеспечения, как показано в документации.
Это запрос axios от Vue:
let url = "http://localhost:8000/leadmanager/api/lead/";
axios.get(url)
.then(res => console.log(res.data))
.catch(error => console.log(error));
Изначально я получил эту ошибку:
Доступ к XMLHttpRequest по адресу http://localhost:8000/leadmanager/api/lead/' от источника 'http://test.net' был заблокирован политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Итак, я проверил документацию и установил django-cors-headers и включил URL-адрес веб-сайта Laravel в CORS_ORIGIN_WHITELIST.
CORS_ORIGIN_WHITELIST = [
"http://test.net"
]
После этого я получаю другую ошибку.Я подозревал, что это связано с тем, что Laravel по умолчанию присоединяет заголовки x-csrf-token к отправляемым пакетам.
Доступ к XMLHttpRequest по адресу http://localhost:8000/leadmanager/api/lead/' from origin 'http://test.net' заблокировано политикой CORS: поле заголовка запроса x-csrf-token не разрешено Access-Control-Allow-Headers в ответе перед полетом.
Разрешение запросов с x-csrf-tokensЯ попробовал следующие настройки для django-cors-headers в settings.py:
CORS_ALLOW_HEADERS = [
'x-csrftoken'
]
CSRF_TRUSTED_ORIGINS = [
'http://test.net'
]
Так как мне настроить бэкэнд Django, чтобы разрешать запросы от Laravel, связанные с x-csrf-headers?Я хочу сделать это без необходимости изменять настройки Laravel, чтобы они не прикрепляли эти заголовки, поскольку они представляют собой функцию безопасности, реализованную Laravel для смягчения атак CSRF.