答案是使用Laravel Sanctum、自定义中间件或fruitcake/laravel-cors解决CORS问题。推荐fruitcake/laravel-cors或Sanctum,配置允许的域名、方法和头,避免线上环境使用通配符,确保安全。

在Laravel开发API时,前端请求经常会遇到跨域问题(CORS),这是因为浏览器的同源策略限制了不同源之间的资源访问。要让前端能正常调用Laravel后端接口,必须正确配置CORS。以下是几种常见且有效的解决方案。
使用 Laravel Sanctum 配置 CORS
Laravel Sanctum 是官方推荐用于SPA、移动端等场景的轻量级认证方案,它内置了对CORS的支持,尤其适合与Vue、React等前端框架配合使用。
安装Sanctum:
composer require laravel/sanctum
发布配置文件:
php artisan vendor:publish –provider=”LaravelSanctumSanctumServiceProvider”
在 config/cors.php 中配置允许的域名、方法和头信息:
‘paths’ => [‘api/*’, ‘sanctum/csrf-cookie’],
‘allowed_methods’ => [‘*’],
‘allowed_origins’ => [‘http://localhost:3000’], // 允许的前端地址
‘allowed_headers’ => [‘*’],
确保 AppHttpMiddlewareHandleCors 已被启用,并在 app/Http/Kernel.php 的 $middleware 中注册。
手动配置中间件处理CORS
如果不想使用Sanctum,也可以自定义中间件来处理跨域请求。
生成中间件:
php artisan make:middleware Cors
编辑中间件文件 app/Http/Middleware/Cors.php:
Humata
Humata是用于文件的ChatGPT。对你的数据提出问题,并获得由AI提供的即时答案。
82 查看详情
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’);
}
// 处理预检请求
if ($request->method() === ‘OPTIONS’) {
return response(”, 200)
->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 添加:
‘cors’ => AppHttpMiddlewareCors::class,
使用第三方包:fruitcake/laravel-cors
这是目前社区广泛使用的CORS解决方案,功能完善且易于配置。
安装包:
composer require fruitcake/laravel-cors
在 config/app.php 中注册服务提供者(Laravel 9+ 可跳过):
FruitcakeCorsCorsServiceProvider::class,
发布配置文件:
php artisan vendor:publish –tag=”cors”
修改 config/cors.php 设置:
‘allowed_origins’ => [‘http://localhost:3000’],
‘allowed_methods’ => [‘*’],
‘allowed_headers’ => [‘*’],
‘supports_credentials’ => true,
该包会自动处理预检请求(OPTIONS),无需手动干预。
基本上就这些常用方式。推荐优先使用 fruitcake/laravel-cors 或 Laravel Sanctum,它们更稳定且维护良好。手动中间件适合简单项目或学习理解CORS机制。配置时注意不要开放所有域名(*)在线上环境,避免安全风险。
以上就是Laravel API开发中如何配置CORS解决跨域问题的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/738886.html
微信扫一扫
支付宝扫一扫