📅  最后修改于: 2023-12-03 15:02:34.719000             🧑  作者: Mango
在Laravel项目中使用CORS(跨来源资源共享)可以让我们的Web应用程序支持来自不同来源的API请求。对于跨域API请求,我们可能会遇到类似的错误:No 'Access-Control-Allow-Origin' header is present on the requested resource.
解决方法是启用CORS。这里我们介绍一个Laravel包,可以很容易地启用CORS。
我们使用 barryvdh/laravel-cors 这个Laravel包。
在终端中,使用Composer进行安装:
composer require barryvdh/laravel-cors
安装成功后,打开config/app.php
文件,将以下代码行添加到 providers
数组末尾:
'Barryvdh\Cors\ServiceProvider',
并在aliases
数组末尾添加以下代码行:
'Cors' => 'Barryvdh\Cors\Facade',
要配置Laravel-Cors,首先需要执行以下命令:
php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"
这会将配置文件config/cors.php
文件复制到你的项目中,你可以在其中配置Laravel-Cors。
下面是一个示例配置文件:
return [
'allowedOrigins' => ['*'],
'allowedHeaders' => ['*'],
'allowedMethods' => ['GET', 'POST', 'PUT', 'DELETE'],
'exposedHeaders' => [],
'maxAge' => 0,
];
在上面的示例中,我们允许所有来源(因为allowedOrigins
中有'*'
)。这在开发环境中很有用,但在生产环境中要注意保护API的安全性。
要想在Laravel中启用CORS,我们需要使用Cors
类,因为我们在配置文件中设置了Facade别名。
下面是一个示例代码片段:
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Cors;
Route::get('/example', function () {
$response = new Response();
Cors::set($request, $response);
return $response;
});
在上面的代码中,我们首先实例 Response
类,然后在返回之前调用Cors::set()
方法来启用CORS。
现在你已经知道了如何在Laravel中启用CORS!使用Laravel-Cors,您可以轻松地启用CORS,以便您的Web应用程序支持跨域API调用。