Единое исправление для ВСЕХ ошибок CORS в одном приложении - PullRequest
0 голосов
/ 05 августа 2020

Я знаю, что у многих людей были проблемы с CORS. Я много искал и нашел много ответов, но у меня все еще есть ошибки. То, что я пробовал, решило некоторые ошибки, но вызвало другие, все ошибки CORS ...

В моем приложении я использую два API: API для аутентификации и запросы mysql, второй - openweathermap. Для последнего я нашел решение, добавив https://cors-anywhere.herokuapp.com/ перед URL-адресом API (http://api.openweathermap.org/ ...). Это работает хорошо. Но у меня все еще возникают ошибки, когда я использую свой собственный API.

Я пробовал использовать тот же метод, но мой вызов ax ios получает 404.

https://cors-anywhere.herokuapp.com/my_api.test/api/login 404 (Invalid host)

Для входа в систему он работает но все остальные вызовы API терпят неудачу. Я обнаружил, что могу добавить заголовки в свой API, чтобы помочь мне:

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Authorization");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");

Добавление этого позволяет другим вызовам API выполняться успешно, но вход в систему не выполняется ... Есть ли способ сделать все мои вызовы API успешно?

Сообщение об ошибке:

Access to XMLHttpRequest at 'http://my_api.test/api/login' from origin
'http://localhost:3000' has been blocked by CORS policy: Response to preflight
request doesn't pass access control check: The 'Access-Control-Allow-Origin'
header contains multiple values '*, *', but only one is allowed.

1 Ответ

0 голосов
/ 10 августа 2020

Laravel - это и проблема, и решение. Для решения этой проблемы в папке config есть файл с именем cors.php. По умолчанию управляется только путь api / . Добавление заголовков решило проблему для других путей, но вызвало ошибку для пути 'api / '.

The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.

Просто заменив api/* на /* в config/cors.php, я могу получить доступ ко всем путям моего API без ошибок CORS.

...