使用 laravel-cors 实现 Laravel 的跨域配置
一、需求
一个项目需要进行前端跨域,不适用 jsonp
。
因此需要进行 cors 的设置。
最开始的时候,我使用的是路由中间件的方式,但是发现中间件不起作用。
// 路由中间件 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'); $response->header('Access-Control-Allow-Credentials', 'false'); return $response; }
因此后面直接使用了 laravel-cors
的库来实现。
laravel-cors 库 地址:
二、使用
安装:
composer require barryvdh/laravel-cors
我使用的是 laravel 5.6 如果低于 5.5 版本需要手动进行注册服务:
位于:config/app.php
,添加下面代码
Barryvdh\Cors\ServiceProvider::class,
全局使用:
如果作为全局使用的中间件,则直接加入到 middleware 中即可:
修改 app/Http/kernel.php
文件:
protected $middleware = [ // ... \Barryvdh\Cors\HandleCors::class, ];
中间件组使用
如果只是在中间件组中使用,则加入相应的中间件组就OK
protected $middlewareGroups = [ 'web' => [ // ... ], 'api' => [ // ... \Barryvdh\Cors\HandleCors::class, ], ];
配置选项
导出配置:
php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"
配置的基本内容:
return [ /* |-------------------------------------------------------------------------- | Laravel CORS |-------------------------------------------------------------------------- | | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*') | to accept any value. | */ 'supportsCredentials' => false, 'allowedOrigins' => ['*'], 'allowedHeaders' => ['Content-Type', 'X-Requested-With'], 'allowedMethods' => ['*'], // ex: ['GET', 'POST', 'PUT', 'DELETE'] 'exposedHeaders' => [], 'maxAge' => 0, ]
本文链接:http://www.ptbird.cn/laravel-cors-to-cors-laravel-app.html