You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lumen 9.1.2启用CORS分步指导请求:跨域API调用被拦截

Lumen 启用CORS解决跨域拦截的分步操作指导

针对你遇到的预检请求未返回HTTP OK状态导致的CORS拦截问题,以下是Lumen中配置CORS的具体步骤:

1. 创建CORS中间件

在app/Http/Middleware目录下新建CorsMiddleware.php文件,写入以下代码:

<?php

namespace App\Http\Middleware;

use Closure;

class CorsMiddleware
{
    public function handle($request, Closure $next)
    {
        // 配置CORS响应头,生产环境建议指定具体域名而非*
        $headers = [
            'Access-Control-Allow-Origin'      => 'http://web.alopez.es:3000',
            'Access-Control-Allow-Methods'     => 'POST, GET, OPTIONS, PUT, DELETE',
            'Access-Control-Allow-Credentials' => 'true',
            'Access-Control-Max-Age'           => '86400',
            'Access-Control-Allow-Headers'     => 'Content-Type, Authorization, X-Requested-With'
        ];

        // 直接响应预检OPTIONS请求,返回200 OK
        if ($request->isMethod('OPTIONS')) {
            return response()->json('', 200, $headers);
        }

        // 为其他请求添加CORS头
        $response = $next($request);
        foreach ($headers as $key => $value) {
            $response->header($key, $value);
        }

        return $response;
    }
}

提示:开发环境可将Access-Control-Allow-Origin设为*,方便测试;生产环境必须指定前端实际域名,降低安全风险。

2. 注册中间件

打开bootstrap/app.php文件,完成两个配置:

  • 注册路由中间件别名(可选,用于指定路由组):
$app->routeMiddleware([
    // 保留原有中间件,新增以下行
    'cors' => App\Http\Middleware\CorsMiddleware::class,
]);
  • 全局注册中间件(让所有API路由都生效):
$app->middleware([
    // 保留原有全局中间件,新增以下行
    App\Http\Middleware\CorsMiddleware::class,
]);

如果你只想给特定路由启用CORS,可在路由定义时添加->middleware('cors'),无需全局注册。

3. 验证配置

  • 重启Lumen应用(若使用内置开发服务器,先终止进程再重新执行php -S 0.0.0.0:8000)
  • 再次从前端发起请求,CORS拦截问题应已解决。

额外注意事项

  • 若前端请求包含自定义请求头,需在Access-Control-Allow-Headers中添加对应字段
  • 若使用Nginx等反向代理,需确保服务器层面未覆盖CORS响应头
  • 生产环境严格限制允许的源,避免跨域安全风险

内容的提问来源于stack exchange,提问作者Alejandro López

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:20:37