简单的答案是将 Access-Control-Allow-Origin
头设置为 localhost
或 *
。以下是我通常的做法:
创建一个名为 Cors
的简单中间件:
php artisan make:middleware Cors
将以下代码添加到app/Http/Middleware/Cors.php
中:
```php
class Cors
{
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
}
}
```
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
}
您可以将*
替换为localhost
,或者保留其原样。
下一步是加载中间件。请将以下行添加到app/Http/Kernel.php
文件中的$routeMiddleware
数组中。
'cors' => \App\Http\Middleware\Cors::class,
最后一步是在要设置访问来源头的路由上使用中间件。假设您正在谈论laravel 5.3中的新api路由,则应该在 app/Providers/RouteServiceProvider.php
文件中的 mapApiRoutes()
函数内执行(您可以删除或注释该函数的以前代码):
Route::group([
'middleware' => ['api', 'cors'],
'namespace' => $this->namespace,
'prefix' => 'api',
], function ($router) {
Route::apiResource('/posts','PostController');
});