Access to XMLHttpRequest at 'http://youji.teavels.test/api/travels/show' from origin 'http://127.0.0.1:8848' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
很多人应该会遇到以上问题吧?其实说白了就是跨域。
跨域问题、这是一种反很常见的问题、当然解决方式也有很多、我们使用 Laravel 开发的项目处理起来就更简单了。假设我们的项目是采用 dingo/api 来处理 API 的。那么我们可以使用 barryvdh/laravel-cors 扩展包来解决跨域问题
composer require barryvdh/laravel-cors
发布配置文件
php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"
扩展包的使用是非常简单的,我们在需要的地方增加中间件即可。
如果需要全局使用,可以在 app/Http/Kernel.php
的 $middleware
中增加\Barryvdh\Cors\HandleCors::class
,假如我们只有接口部分设计到 CORS
问题,我们只添加到 API
相关的路由中。
因为我们使用了DingoApi
,路由部分被接管了,所以需要去 routes/api.php
中单独设置中间件。
首先需要设置一下该中间件的别名,方便使用: 修改 app/Http/Kernel.php
protected $routeMiddleware = [
.
.
.
'cors' => \Barryvdh\Cors\HandleCors::class,
];
接下来只需要在 routes/api.php
中增加该中间件即可:
$api->version('v1', [
'namespace' => 'App\Http\Controllers\Api',
'middleware' => ['cors']
], function ($api) {...}
基于以上配置即可轻松解决跨域问题.
更多信息、请参考 barryvdh/laravel-cors
(adsbygoogle = window.adsbygoogle || []).push({});