在 Laravel 框架中处理 CORS(跨源资源共享)问题,你可以通过在中间件中设置相应的 HTTP 头来实现。这样,每当你的 API 被调用时,Laravel 将自动添加这些头到响应中。下面是如何在 Laravel 中创建和设置 CORS 中间件的步骤:

步骤 1: 创建 CORS 中间件

首先,你需要创建一个新的中间件用于处理 CORS。在终端或命令行中,运行以下 Artisan 命令来创建中间件:

php artisan make:middleware CorsMiddleware

这将在 app/Http/Middleware 目录下创建一个名为 CorsMiddleware.php 的文件。

步骤 2: 编辑中间件

打开 app/Http/Middleware/CorsMiddleware.php 文件,并添加以下代码来设置 CORS 相关的 HTTP 头:

<?php

namespace App\Http\Middleware;

use Closure;

class CorsMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        // 允许的源可以是 '*' 或 'https://example.com'
        $response->headers->set('Access-Control-Allow-Origin', '*');

        // 可根据需要添加更多的头
        $response->headers->set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE');
        $response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Accept, Authorization, X-Requested-With, Application');

        return $response;
    }
}

步骤 3: 注册中间件

接下来,你需要在全局或路由组中注册这个中间件。打开 app/Http/Kernel.php 文件,并在 $middleware 数组中添加你的 CORS 中间件:

protected $middleware = [
    // 其他中间件...
    \App\Http\Middleware\CorsMiddleware::class,
];

或者,如果你只想对特定的路由使用 CORS 中间件,可以将其添加到路由中间件组或单独路由中:

// 在路由中间件组中
protected $middlewareGroups = [
    'api' => [
        \App\Http\Middleware\CorsMiddleware::class,
        // 其他中间件...
    ],
];

// 或在单独路由中
Route::middleware([\App\Http\Middleware\CorsMiddleware::class])->group(function () {
    Route::get('/api/events', 'EventsController@index');
});

步骤 4: 测试 CORS 设置

完成上述设置后,尝试从你的前端应用发起请求到 Laravel 后端,检查是否可以成功获取数据且没有 CORS 相关错误。

通过这种方式,你可以灵活地控制哪些源可以访问你的 Laravel 后端,同时也解决了浏览器的同源策略问题。