Нет заголовка «Access-Control-Allow-Origin» – Laravel 5.4

XMLHttpRequest не может загрузить http: // myapi / api / rating . Ответ на запрос перед полетом не проходит проверку контроля доступа. Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Поэтому исходный адрес http: // localhost: 8104 'не допускается. В ответе был код статуса HTTP 403.

Я не могу понять, почему я не могу делать запросы CORS. Я установил здесь промежуточное ПО, добавив его в глобальное ядро ​​http, но он все еще не работает. Пытался создать собственное промежуточное ПО, предлагаемое с помощью предложений stackoverflow, но это также не сработало. Также попробовал добавить группу маршрутов. Наконец, я попытался настроить заголовки ответов вручную в действии запроса. Я действительно застрял – помощь приветствуется!

См. Код: https://gist.github.com/KerryRitter/0d7ababb7b9eb8d54f0ae55add9704a1

Solutions Collecting From Web of "Нет заголовка «Access-Control-Allow-Origin» – Laravel 5.4"

https://github.com/barryvdh/laravel-cors

Пакет laravel-cors позволяет отправлять заголовки совместного использования ресурсов Cross-Origin с конфигурацией промежуточного программного обеспечения Laravel.

Особенности

Обрабатывает запросы перед запросом к полетам CORS Добавляет заголовки CORS к вашим ответам

Недавно я столкнулся с этой ошибкой в ​​laravel 5.4, я отправлял запрос на отправку ajax на свой собственный сайт и все еще получал эту ошибку, я столкнулся с этой ошибкой из-за двух причин, чтобы быть точным,

error: XMLHttpRequest cannot load https://[mydomain].com/quote/short. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://[mydomain].com' is therefore not allowed access.

Причиной ошибки выше было то, что я отправлял запрос на http-домен из домена https, поэтому, когда я изменил его на https, ошибка была решена, затем снова я получил ту же ошибку по той же причине, которая была причиной этого время, домен имел www. и запрошенный не сделал, после того, как я добавил www. для обоих он работал как шарм.

И для запросов на перекрестный поиск я использовал следующее решение:

  1. Создайте промежуточное ПО (cors в моем случае) с кодом ниже

     return $next($request) ->header('Access-Control-Allow-Origin', '*') ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); 
  2. Вставьте промежуточное содержимое в routeMiddleware массив в kernal.php

    'cors' => \App\Http\Middleware\Cors::class,

  3. Добавить промежуточное ПО к уважаемому маршруту

    Route::get('myRoute', ['middleware' => 'cors' , 'uses'=> 'MyController@Action']

Надеюсь, что этот ответ поможет кому-то столкнуться с той же проблемой, что и я.

Решено: я не добавил «Barryvdh \ Cors \ ServiceProvider :: class» в массив поставщиков config / app.php.