处理Laravel项目接口跨域请求问题
// Laravel 应用中使用中间件处理跨域请求
// 在 app/Http/Middleware 目录下创建一个新的中间件文件 CrossOrigin.php
// 使用 artisan 命令:php artisan make:middleware CrossOrigin
// CrossOrigin.php 文件内容
namespace App\Http\Middleware;
use Closure;
class CrossOrigin {
/**
* 处理传入的请求。
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
// 允许跨域的域名列表,可以根据实际需要配置
$domains = ['http://example.com', 'http://localhost:3000'];
// 检查是否来自允许的域,并设置跨域响应头
if(in_array($request->header('Origin'), $domains)) {
return $next($request)
->header('Access-Control-Allow-Origin', $request->header('Origin'))
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
}
return $next($request);
}
}
// 在 app/Http/Kernel.php 中注册中间件
protected $middleware = [
// ...
\App\Http\Middleware\CrossOrigin::class,
];
这段代码定义了一个名为 CrossOrigin
的中间件,用于检查请求是否来自于允许的域,并设置相应的跨域资源共享头。然后在全局中间件数组 $middleware
中注册该中间件,以便在每次请求时应用跨域处理逻辑。
评论已关闭