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

Laravel处理CORS跨域请求的核心在于正确配置中间件,确保服务器能接收并响应来自不同源的前端请求。最常见的场景是前后端分离项目中,前端运行在localhost:3000或某个域名,而后端Laravel应用运行在另一个端口或子域上,浏览器会因安全策略阻止这类请求。
使用 Laravel Sanctum 配置 CORS(推荐方式)
如果你的项目使用 Laravel Sanctum 管理 API 认证,它已经内置了对 CORS 的支持,只需简单配置即可。
打开 config/cors.php 文件,设置允许的源、方法和头信息 例如允许本地开发环境访问:
‘domains’ => [
‘http://localhost:3000’,
‘https://your-frontend.com’
],
‘methods’ => [‘*’],
‘headers’ => [‘*’],
配置后,Sanctum 会在预检请求(OPTIONS)中自动返回正确的响应头,避免浏览器拦截。
自定义中间件处理复杂 CORS 场景
当需要更精细控制时,可创建中间件手动添加 CORS 头。
执行命令生成中间件:php artisan make:middleware CorsMiddleware 在 handle 方法中添加响应头:
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 预检请求
浏览器在发送非简单请求前会先发一个 OPTIONS 请求,Laravel 必须正确响应,否则后续请求会被阻止。
确保路由文件中有处理 OPTIONS 请求的规则 可在 RouteServiceProvider 的 boot 方法中统一处理:
Route::options(‘{any}’, function () {
return response(”, 200);
})->where(‘any’, ‘.*’);
这样所有未定义的 OPTIONS 请求都会返回 200,配合中间件头信息即可通过预检。
基本上就这些。只要配置好中间件和响应头,Laravel 能稳定处理各类跨域请求。关键是根据项目实际需求选择 Sanctum 或自定义方案,避免遗漏 OPTIONS 请求的处理。
以上就是laravel如何处理CORS跨域请求问题_Laravel处理CORS跨域请求方法的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/194706.html
微信扫一扫
支付宝扫一扫