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

在Laravel开发API时,前端请求经常会遇到跨域问题(CORS),这是因为浏览器的同源策略限制了不同源之间的资源访问。要让前端能正常调用Laravel后端接口,必须正确配置CORS。以下是几种常见且有效的解决方案。
Laravel Sanctum 是官方推荐用于SPA、移动端等场景的轻量级认证方案,它内置了对CORS的支持,尤其适合与Vue、React等前端框架配合使用。
安装Sanctum:
composer require laravel/sanctum发布配置文件:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"在 config/cors.php 中配置允许的域名、方法和头信息:
'paths' => ['api/*', 'sanctum/csrf-cookie'],确保 App\Http\Middleware\HandleCors 已被启用,并在 app/Http/Kernel.php 的 $middleware 中注册。
如果不想使用Sanctum,也可以自定义中间件来处理跨域请求。
生成中间件:
php artisan make:middleware Cors编辑中间件文件 app/Http/Middleware/Cors.php:
public function handle($request, \Closure $next)将中间件注册到全局中间件或路由中间件中,在 app/Http/Kernel.php 添加:
'cors' => \App\Http\Middleware\Cors::class,这是目前社区广泛使用的CORS解决方案,功能完善且易于配置。
安装包:
composer require fruitcake/laravel-cors在 config/app.php 中注册服务提供者(Laravel 9+ 可跳过):
Fruitcake\Cors\CorsServiceProvider::class,发布配置文件:
php artisan vendor:publish --tag="cors"修改 config/cors.php 设置:
'allowed_origins' => ['http://localhost:3000'],该包会自动处理预检请求(OPTIONS),无需手动干预。
基本上就这些常用方式。推荐优先使用 fruitcake/laravel-cors 或 Laravel Sanctum,它们更稳定且维护良好。手动中间件适合简单项目或学习理解CORS机制。配置时注意不要开放所有域名(*)在线上环境,避免安全风险。
以上就是Laravel API开发中如何配置CORS解决跨域问题的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号