Laravel 11 CORS (跨域)案例

作者: 温新

图书: 【Laravel 11 实战】

阅读: 382

时间: 2025-01-18 12:40:40

前后端分离的开发模式中,经常遇到跨域问题。本篇文章将使用 Laravel 11 对跨域问题进行处理。

默认情况下,Laravel 11 中默认启用跨域中间件。

在 Laravel 中,CORS(跨域资源共享)中间件允许您的 web 应用程序安全地从不同的源(域)请求资源。这对 API 和网络服务非常有用。该中间件会检查并批准这些跨域请求,确保它们符合指定的安全政策。在 Laravel 中,可以轻松设置和配置 CORS 中间件,以控制哪些外部网站可以访问您的应用程序资源。

Laravel 11 可以自动响应 CORS OPTIONS HTTP 请求,使用选择的设置。OPTIONS 请求由 HandleCors 中间件处理,该中间件已包含在应用程序的全局中间件堆栈中。

有时,可能需要更改应用程序的 CORS 设置。可以通过使用 config:publish artisan 命令发布 CORS 配置文件来做到这一点。

发布 cors 配置文件

1)生成 cors 配置文件

$ php artisan config:publish cors

该命令会在 config 目录下生成 cors.php 配置文件。

2)修改 cors.php

config/cors.php

<?php

return [
    // 允许跨域的路径
    'paths'                    => ['api/*', 'sanctum/csrf-cookie'],
    // 允许所有请求方法
    'allowed_methods'          => ['*'],
    // 允许所有源
    'allowed_origins'          => ['*'],
    // 不使用特定的源模式
    'allowed_origins_patterns' => [],
    // 允许所有请求头
    'allowed_headers'          => ['*'],
    // 不暴露特定头部
    'exposed_headers'          => [],
    // 不缓存预检请求
    'max_age'                  => 0,
    // 允许发送凭据(如 cookies)
    'supports_credentials'     => true,
];

这样配置后,应用将允许任何来源的跨域请求。

请登录后再评论