Как включить CORS в Laravel?

Я нахожусь в Laravel 5.8 - я постоянно получаю эту проблему CORS

я пытался

php artisan make:middleware Cors

Добавьте этот код

<?php
namespace App\Http\Middleware;
use Closure;
class Cors
{
  public function handle($request, Closure $next)
  {
    return $next($request)
      ->header(‘Access-Control-Allow-Origin’, ‘*’)
      ->header(‘Access-Control-Allow-Methods’, ‘GET, POST, PUT, DELETE, OPTIONS’)
      ->header(‘Access-Control-Allow-Headers’, ‘X-Requested-With, Content-Type, X-Token-Auth, Authorization’);
  }
}

перезапустить мой локальный Apache 2 sudo apachectl -k restart

Откройте app/Http/Kernel.php - добавил эту 1 строку

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'admin' => \App\Http\Middleware\AdminMiddleware::class,
        'dev' => \App\Http\Middleware\DevMiddleware::class,
        'cors' => \App\Http\Middleware\Cors::class, <----- 
    ];

обновите сайт, перейдите в консоль, все еще видите ту же проблему CORS

Как можно поступить и отладить это дальше?


person cyb3rZ    schedule 25.03.2019    source источник
comment
Применили ли вы промежуточное ПО к маршруту в файле маршрутов?   -  person ceejayoz    schedule 25.03.2019
comment
вместо $routeMiddleware поместите его в $middleware, которое запускается при каждом запросе к вашему приложению.   -  person Nishant    schedule 09.04.2021


Ответы (3)


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

person ArtemSky    schedule 25.03.2019
comment
У меня была та же проблема, и этот пакет не помог мне, но это помогло laravel-cors. Надеюсь, это поможет кому-то. - person Eric McWinNEr; 09.08.2019
comment
@ S.Sid Рад, что смог помочь. - person Eric McWinNEr; 10.10.2019
comment
у меня ничего не работает((( Я уже добавил заголовки вручную в bootstrap/app.php и вижу эти заголовки в почтальоне, но это все равно не работает((((( - person Denys Siebov; 27.01.2020

Первое решение

Попробуйте установить промежуточное ПО CORS как глобальное промежуточное ПО.

handle function в CORS middleware:

 public function handle($request, Closure $next)
 {
  return $next($request)
   ->header('Access-Control-Allow-Origin', '*')
   ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS')
   ->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
 }

чтобы добавить это промежуточное ПО глобально, перейдите к App\Http\Kernel и добавьте эту строку в массив $middleware:

\App\Http\Middleware\Cors::class,

Второе решение

вы также можете добавить этот код в bootstrap/app.php

header('Access-Control-Allow-Origin', '*');
header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');
header('Access-Control-Allow-Headers', 'Content-Type, Authorization');

надеюсь, что это работает!

person Behzad Pournouri    schedule 10.01.2020
comment
он дает header() ожидает не более 3 параметров, 7 задано - person Swarna Sekhar Dhar; 18.07.2020
comment
Я помещаю эти строки в конец этих файлов, кеш очищается, но блок сохраняется - person Alejandro Beltran; 08.06.2021

Добавьте ниже к вам .htaccess (просто добавьте к целевому сайту и исходному сайту)

Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"

RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

Надеюсь, это сэкономит кому-то время, удачного кодирования!!!

person The Billionaire Guy    schedule 14.10.2020