Laravel 10 中 CORS 允许的 HTTP 方法由 config/cors.php 的 allowed_methods 控制,支持显式列举(如 ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'])或通配符 ['*'];需确保预检 OPTIONS 请求被正确响应,且对应路由和控制器方法实际存在,否则将触发浏览器 CORS 拒绝或 405 错误。

在 Laravel 10 中,CORS(跨域资源共享)支持的 HTTP 方法由 allowed_methods 配置项控制,它决定哪些请求类型能被浏览器允许发起跨域调用。
默认支持的请求方法
通过 fruitcake/laravel-cors 包(Laravel 10 官方推荐且默认兼容),allowed_methods 可设为:
-
显式列出:如
['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD'] -
通配符形式:使用
['*'],表示允许所有标准及自定义方法(实际生效取决于服务器和中间件实现,Laravel-cors 支持该写法)
关键细节说明
这些方法是否真正可用,还依赖以下条件:
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
- 预检请求(OPTIONS)必须放行:浏览器对非简单请求(如带自定义头、PUT/DELETE 等)会先发 OPTIONS 请求。中间件需正确响应,否则后续请求直接失败
-
路由本身要存在对应方法的处理逻辑:例如配置了
PUT,但控制器没写update()或路由未定义Route::put(),仍会返回 405 错误 -
中间件启用位置影响范围:若只加在
'api'中间件组,则仅api/*路由受控;全局注册则所有请求都检查该规则
常见配置示例
在 config/cors.php 中:
- 开发环境可写:
'allowed_methods' => ['*'] - 生产环境建议明确列出:
'allowed_methods' => ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'] - 若用到 JSON API 或 Webhook,可能还需加入
PATCH或自定义方法(如REPORT),需一并写入数组
不支持的方法不是“被禁用”,而是“未声明”
如果某个方法(比如 SEARCH)不在 allowed_methods 列表中,浏览器会在预检阶段拒绝请求,返回 403 Forbidden 或 CORS 错误。这不是 Laravel 拒绝执行,而是中间件未在响应头中声明该方法合法。










