第
laravel怎么设置跨域(两种方法)
在前后端分离的项目中,前端请求后端接口时可能会遇到跨域的问题。其中,一个典型的场景是:前端项目运行在http://localhost:8080,而后端项目运行在http://localhost:8000,这时候就需要设置跨域。
在Laravel中,要设置跨域可以采用以下两种方法。
中间件方式
先创建一个中间件CorsMiddleware:
phpartisanmake:middlewareCorsMiddleware
在CorsMiddleware中处理跨域:
php
namespaceApp\Http\Middleware;
useClosure;
classCorsMiddleware
publicfunctionhandle($request,Closure$next)
$origin=$request-header(Origin):*
header(Access-Control-Allow-Origin:.$origin);
header(Access-Control-Allow-Headers:Origin,Content-Type,Authorization
header(Access-Control-Allow-Methods:GET,POST,PUT,DELETE,OPTIONS
return$next($request);
}
该中间件会在Http/Kernel.php中的$middleware数组中注册:
protected$middleware=[
//...
\App\Http\Middleware\CorsMiddleware::class,
];
这时候Laravel将在响应头中添加Access-Control-Allow-Origin等跨域相关的信息。
Laravel-cors扩展包
其实,Laravel社区已经有许多开源扩展包可以用来处理跨域问题。比如,laravel-cors,它提供了一些配置项来设置跨域请求。
首先,安装扩展包:
composerrequirebarryvdh/laravel-cors
接着,在config/app.php中的providers数组中注册服务提供者:
providers=[
//...
Barryvdh\Cors\ServiceProvider::class,
],
最后,发布配置文件:
phpartisanvendor:publish--provider=Barryvdh\Cors\ServiceProvider
这时候,可以在config/cors.php中配置跨域请求:
return[
|--------------------------------------------------------------------------
|LaravelCORSOptions
|--------------------------------------------------------------------------
|Theallowed_methodsandallowed_headersoptionsarecase-insensitive.
allowed_origins=[*],
allowed_origins_patterns=[],
allowed_headers=[*],
allowed_methods=[*],
exposed_headers=[],
max_age=0,
supports_credentials=false,
];
按照需求进行相应的配置即可。
以上就是在Laravel中设置跨域的两种方法,选择一种适合自己的即可。