laravel怎么设置跨域(两种方法)
在前后端分离的项目中,前端请求后端接口时可能会遇到跨域的问题。其中,一个典型的场景是:前端项目运行在 http://localhost:8080,而后端项目运行在 http://localhost:8000,这时候就需要设置跨域。
在 Laravel 中,要设置跨域可以采用以下两种方法。
1、中间件方式(已测试验证)
先创建一个中间件 CorsMiddleware
php artisan make:middleware CorsMiddleware
在 CorsMiddleware 中处理跨域:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class CorsMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function handle(Request $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 等跨域相关的信息
2、Laravel-cors 扩展包
参考如下: (这种没有经过我测试验证)
标签:laravel,Origin,跨域,Access,header,CorsMiddleware,Allow From: https://www.cnblogs.com/andydao/p/17984169