В моем приложении Laravel я настроил маршрут перехвата всех сообщений для обработки предварительных запросов CORS.
Route::options('/{any}', 'v1\ApiController@handleCors')->where('any', '.*');
Это относится к функции, которая делает это:
return response()
->json($data, $this->statusCode)
->header('Accept', '*/*')
->header('Access-Control-Request-Headers', 'Content-Type, Authorization')
->header('Access-Control-Allow-Origin', 'https://frontend.myapp.com')
->header('Access-Control-Allow-Methods', 'GET, POST, DELETE, PUT, OPTIONS');
Сейчаскогда я вызываю маршрут с запросом OPTIONS
, я возвращаю все заголовки. Затем я запустил следующую команду в Терминале:
curl -i -X OPTIONS -H "Origin: https://frontend.myapp.com" \
-H 'Access-Control-Request-Method: POST' \
-H 'Access-Control-Request-Headers: Content-Type, Authorization' \
"https://api.myapp.com/testingcors"
Я получаю следующий ответ:
HTTP/1.1 403 Forbidden
Server: nginx
Date: Mon, 28 Oct 2019 15:29:48 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/7.3.10
Cache-Control: no-cache, private
Origin not allowed%
И когда я позволяю фактическому веб-интерфейсу общаться с API, он выдает то же самоеошибка. Что я тут не так делаю?