解决 laravel 跨域问题

首页 / 正文

新建中间件

php artisan make:middleware EnableCrossRequestMiddleware

app/Http/Kernel.php 文件下新增

  protected $middleware = [
        ...
        \App\Http\Middleware\EnableCrossRequestMiddleware::class,
    ];

  protected $routeMiddleware = [
         ...
        'cross'=> \App\Http\Middleware\EnableCrossRequestMiddleware::class,
    ];

EnableCrossRequestMiddleware文件

  public function handle($request, Closure $next)
    {
    //允许所有人访问
        $response = $next($request);
        $response->header('Access-Control-Allow-Origin', '*');
        $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, Accept');
        $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS,DELETE');
        $response->header('Access-Control-Allow-Credentials', 'false');
        return $response;

      //指定IP访问
         $response = $next($request);
         $origin = $request->server('HTTP_ORIGIN') ? $request->server('HTTP_ORIGIN') : '';
         $allow_origin = [
              'http://127.0.0.1:8080',//允许访问
         ];
         if (in_array($origin, $allow_origin)) {
             $response->header('Access-Control-Allow-Origin', $origin);
             $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN');
             $response->header('Access-Control-Expose-Headers', 'Authorization, authenticated');
             $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
             $response->header('Access-Control-Allow-Credentials', 'true');
         }
         return $response;
    }

路由

//让每个接口都经过中间件
Route::group(['middleWare'=>['cross']],function(){
    Route::get('/test','TestController@index');
})
打赏
评论区
头像