Laravel通过配置CORS中间件处理跨域请求,推荐使用Sanctum内置支持,配置config/cors.php允许源、方法和头;2. 可创建自定义CorsMiddleware添加响应头并注册到Kernel;3. 必须在路由中处理OPTIONS预检请求,可在RouteServiceProvider中统一返回200状态码,确保预检通过。

Laravel处理CORS跨域请求的核心在于正确配置中间件,确保服务器能接收并响应来自不同源的前端请求。最常见的场景是前后端分离项目中,前端运行在localhost:3000或某个域名,而后端Laravel应用运行在另一个端口或子域上,浏览器会因安全策略阻止这类请求。
如果你的项目使用 Laravel Sanctum 管理 API 认证,它已经内置了对 CORS 的支持,只需简单配置即可。
'domains' => [
'http://localhost:3000',
'https://your-frontend.com'
],
'methods' => ['*'],
'headers' => ['*'],
配置后,Sanctum 会在预检请求(OPTIONS)中自动返回正确的响应头,避免浏览器拦截。
当需要更精细控制时,可创建中间件手动添加 CORS 头。
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', 'http://localhost:3000')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
}
记得在 app/Http/Kernel.php 中注册该中间件,并应用到需要的路由组。
浏览器在发送非简单请求前会先发一个 OPTIONS 请求,Laravel 必须正确响应,否则后续请求会被阻止。
Route::options('{any}', function () {
return response('', 200);
})->where('any', '.*');
这样所有未定义的 OPTIONS 请求都会返回 200,配合中间件头信息即可通过预检。
基本上就这些。只要配置好中间件和响应头,Laravel 能稳定处理各类跨域请求。关键是根据项目实际需求选择 Sanctum 或自定义方案,避免遗漏 OPTIONS 请求的处理。
以上就是laravel如何处理CORS跨域请求问题_Laravel处理CORS跨域请求方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号