Итак, у меня есть следующее среднее изделие:
<?php namespace App\Http\Middleware; use Closure; class Cors { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return $next($request) ->header('Access-Control-Allow-Origin', '*') ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); } }
Кажется простым, его зарегистрировали:
<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { /** * The application's global HTTP middleware stack. * * @var array */ protected $middleware = [ // ... \App\Http\Middleware\Cors::class, ]; /** * The application's route middleware. * * @var array */ protected $routeMiddleware = [ 'cors' => \App\Http\Middleware\Cors::class, // ... ]; }
Маршрут использует его:
Route::group([ 'prefix' => 'api/v1/', 'middleware' => 'cors' ], function() { // ... });
Однако консоль заявляет:
Fetch API не может загрузить http: //examplesite.local/api/v1/blogs? _sort = id & _order = DESC & _start = 0 & _end = 10 . Тип содержимого поля заголовка запроса не разрешен заголовками Access-Control-Allow-Headers в предполетном ответе.
- XMLHttpRequest для открытия PDF в браузере
- загрузите большой файл размером от 1 до 2 ГБ с помощью загрузки файла jQuery - blueimp (основанный на Ajax) php / yii, который показывает ошибку в браузере Firefox
- XMLHttpRequest не будет работать в IE 7/8, но работает в других браузерах
- javascript run xmlhttp php script 404 не найден
- Как проверить, является ли запрос AJAX-запросом с PHP
последнее, что я проверил, это был правильный способ установить корс в Laravel 5.3, поэтому, если я не ошибаюсь …
Я могу щелкнуть ссылку для запроса api на вкладке net work chrome и открыть новую вкладку, показывающую мне результат api, который является ответом json.
но javascript предполагает, что cors не включен?
Глядя на последнюю строку вашей ошибки, я предполагаю, что вам не хватает заголовка content-type
на вашей стороне сервера. Попробуйте добавить эту строку в свои заголовки и посмотреть, работает ли она:
header->('Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin');
Вы могли бы также взглянуть на этот ответ.