#laravel #vue.js #cors
Вопрос:
Я обновлял свое приложение laravel, когда заметил , что на сервере один из запросов выдавал a NETWORK ERR
, я изучил его и выяснил, что это может быть связано с политикой cors. Я использовал самостоятельно созданное промежуточное по cors, после этой проблемы я загрузил пакет «fruitcake/laravel-cors», но это не решило проблему. Дело в том, что это прекрасно работает на моем локальном хостинге раньше и до сих пор. Проблема возникает только на сервере. Если бы я мог воспроизвести эту ошибку в своем локальном, возможно, я смог бы найти проблему и решить ее. Вот мой cors.php файл:
<?php
return [
'paths' => ['api/authenticate'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
];
И я зарегистрировал его как:
protected $middleware = [
FruitcakeCorsHandleCors::class,
AppHttpMiddlewareTrustProxies::class,
AppHttpMiddlewareCheckForMaintenanceMode::class,
IlluminateFoundationHttpMiddlewareValidatePostSize::class,
AppHttpMiddlewareTrimStrings::class,
IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
];
Я специально добавил api/authenticate
в путь, потому что это был конкретный путь, вызывающий ошибку. Также ответ совершенно пустой. Любая помощь будет признательна.
Обновить:
Чтобы прояснить мою проблему, на моем сервере есть 2 конечные точки api, которые говорят https://www.a.com/api/login и https://www.a.com/api/authenticate. Оба запроса являются запросами на публикацию, и заголовок ответа на первый (рабочий) является:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://www.a.com
Cache-Control: no-cache, private
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 140
Content-Type: application/json
Date: Fri, 02 Jul 2021 13:21:05 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.4.29 (Ubuntu)
Vary: Origin,Accept-Encoding
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
и ответ на 2-й (проблема) таков:
Cache-Control: no-cache, private
Connection: close
Content-Length: 3255
Content-Type: application/json
Date: Fri, 02 Jul 2021 13:21:49 GMT
Server: Apache/2.4.29 (Ubuntu)
и консоль выводит это как исключение ошибки:
Access to XMLHttpRequest at 'https://www.b.com/api/authenticate' from origin 'https://www.a.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Я немного сбит с толку, но это выглядит так, как будто предполетный запрос отклоняется сервером в случае второго запроса.
Комментарии:
1. Вы проверяли журналы на наличие ошибок? Потому что любой ответ не 200 на запрос ОПЦИИ приведет к ошибке CORS
2. Да, это не запрос ОПЦИИ, также я читал, что это может быть ошибка cors, но я сам не уверен.
3. Запросы на ОПЦИИ отправляются браузером в рамках CORS
4. Нет, я ничего не видел в журналах. Никакого упоминания об этом вопросе.
5. Также отклик составляет 200, протестирован на местном