laravle7.0 Laravel-cors 开发包实现跨域
Laravel 7.0 跨域解决方案
注意:laravel 7.0是默认带有 fruitcake/laravel-cors开发包
1.根据自己所需自定义header头 config/cors.php
<?php
return [
'paths' => ['api/*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => ['*'],
'allowed_headers' => ['*'],
'exposed_headers' => false,
'max_age' => false,
'supports_credentials' => false,
];
2. 添加HandleCors
中间件到app/Http/Kernel.php
允许所有api跨域,
protected $middleware = [
...
\Fruitcake\Cors\HandleCors::class,
];
在$routeMiddleware
属性中添加:
protected $routeMiddleware = [
...
'cors' => \Fruitcake\Cors\HandleCors::class,
]
在config/app.php
中到providers
里添加服务提供者:
'providers' => [
...
Fruitcake\Cors\CorsServiceProvider::class,
]
在routes/api.php
中添加路由以及cors
中间件:
Route::middleware('cors')->group(function (){
Route::get('article', function(){
return response()->json('跨域成功!',200);
});
});
laravel 7.0之前解决跨域方案
##第一步:创建中间件php artisan make:middleware EnableCrossRequestMiddleware
##第二步:编辑中间件 app/Http/Middleware/EnableCrossRequestMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
class EnableCrossRequestMiddleware{
public function handle($request, Closure $next)
{
header('Content-Type: text/html;charset=utf-8');
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST,GET,PUT,OPTIONS,DELETE'); // 允许请求的类型
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
header('Access-Control-Allow-Headers: Content-Type,Access-Control-Allow-Origin,Access-token,Content-Length,Accept-Encoding,X-Requested-with, Origin,Access-Control-Allow-Methods'); // 设置允许自定义请求头的字段
return $next($request);
}
}
##第三步:注册中间件(全局)app/Http/Kernel.php
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
protected $middleware = [
...
\App\Http\Middleware\EnableCrossRequestMiddleware::class,
];
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: