mcpField
L
ln-773-cors-configurator

ln-773-cors-configurator

github.com/levnikolaevich安全584386 次安装2 天前更新
代码仓库

关于 ln-773-cors-configurator

为 .NET ASP.NET Core 或 Python FastAPI 项目配置 CORS 的工作技能,供项目引导流程使用。它按开发和生产环境生成策略,并验证配置与安全规则。

主要功能

  1. 01支持 .NET 与 Python 栈
  2. 02检测前端来源与配置
  3. 03区分开发和生产策略
  4. 04生成并更新 CORS 配置文件
  5. 05运行语法与预检验证

适用场景

  1. 01为新项目配置 CORS
  2. 02限制生产环境的允许来源
  3. 03检查现有 CORS 设置并跳过重复配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-773-cors-configurator

安装后在 Claude Code 中输入/ln-773-cors-configurator确认已加载。

详细介绍

ln-773-cors-configurator

**类型:**L3 Worker **类别:**7XX 项目引导

以安全为先配置跨域资源共享(CORS)策略。


概述

方面详情
输入来自 ln-770 的上下文存储
输出包含环境特定策略的 CORS 配置
技术栈.NET(ASP.NET Core CORS)、Python(FastAPI CORSMiddleware)

阶段 1:接收上下文

接收协调器提供的上下文存储。

必需上下文:

  • STACK:.NET 或 Python
  • PROJECT_ROOT:项目目录路径
  • ENVIRONMENT:Development 或 Production

幂等性检查:

  • .NET:搜索 AddCors 或 UseCors
  • Python:搜索 CORSMiddleware
  • 如果已找到:返回 { "status": "skipped" }

阶段 2:分析项目结构

确定前端配置。

检测步骤:

  1. 检查同一仓库中是否有前端(/frontend、/client、/web)
  2. 从 .env 或 appsettings.json 读取 CORS_ORIGINS
  3. 识别常见前端端口(3000、5173、4200)

检测到的前端源:

框架默认端口源
React(CRA)3000http://localhost:3000
Vite5173http://localhost:5173
Angular4200http://localhost:4200
Next.js3000http://localhost:3000

阶段 3:决策点

Q1:允许的源
环境策略
Development允许 localhost 源(可配置)
Production仅使用环境变量中明确指定的源

**安全警告:**使用凭据时,绝不能使用 *(通配符)。

Q2:允许的方法
方法默认值说明
GET✓ 是读取操作
POST✓ 是创建操作
PUT✓ 是更新操作
DELETE✓ 是删除操作
PATCH可选部分更新
OPTIONS✓ 是预检请求(自动)
Q3:凭据支持
场景AllowCredentials说明
基于 Cookie 的身份验证✓ 是Cookie 所必需
请求头中的 JWT✗ 否不需要
OAuth2视情况而定查阅文档

**警告:**AllowCredentials = true 时,禁止使用 * 源。

Q4:预检缓存时长
环境MaxAge原因
Development0立即应用配置更改
Production86400(24h)减少预检请求

阶段 4:生成配置

.NET 输出文件
文件用途
Extensions/CorsExtensions.csCORS 服务注册
appsettings.json(更新)源配置
appsettings.Development.json(更新)开发环境源

生成流程:

  1. 使用 MCP ref 查询最新的 ASP.NET Core CORS API
  2. 生成 CorsExtensions,包含:
    • Development 策略(宽松)
    • Production 策略(严格)
    • 基于环境选择策略
  3. 使用 CORS:Origins 更新 appsettings

注册代码:

builder.Services.AddCorsPolicy(builder.Configuration);
// ...
app.UseCors(builder.Environment.IsDevelopment() ? "Development" : "Production");
Python 输出文件
文件用途
middleware/cors_config.pyCORS 中间件配置
.env(更新)CORS_ORIGINS 变量

生成流程:

  1. 使用 MCP ref 查询 FastAPI CORSMiddleware
  2. 生成 cors_config.py,包含:
    • 从环境变量解析源
    • 方法和请求头配置
    • 凭据处理
  3. 使用 CORS_ORIGINS 更新 .env

注册代码:

from middleware.cors_config import configure_cors
configure_cors(app)

阶段 5:验证

验证步骤:

  1. 语法检查:

    • .NET:dotnet build --no-restore
    • Python:python -m py_compile middleware/cors_config.py
  2. CORS 测试:

    # Test preflight request
    curl -X OPTIONS http://localhost:5000/api/test \
      -H "Origin: http://localhost:3000" \
      -H "Access-Control-Request-Method: POST" \
      -v
    
  3. 验证请求头:

    • Access-Control-Allow-Origin:应与请求源匹配
    • Access-Control-Allow-Methods:应列出允许的方法
    • Access-Control-Allow-Credentials:启用时为 true
    • Access-Control-Max-Age:缓存时长

安全检查清单

完成前,请确认:

  • 生产环境中没有使用通配符 * 来源
  • 明确指定允许的方法(生产环境中不使用 AllowAnyMethod)
  • 仅在需要时启用凭据
  • 生产环境中的来源从环境变量读取
  • 生产环境中已启用预检请求缓存

返回协调器

{
  "status": "success",
  "files_created": [
    "Extensions/CorsExtensions.cs"
  ],
  "packages_added": [],
  "registration_code": "builder.Services.AddCorsPolicy(configuration);",
  "message": "Configured CORS with Development and Production policies"
}

参考链接


关键规则

  • 绝不要在启用凭据时使用通配符 * 来源——这违反了 CORS 规范
  • 生产环境中的来源只能从环境变量读取——代码中不得硬编码 URL
  • 为开发和生产环境分别设置策略——本地配置宽松,生产环境配置严格
  • 保持幂等——如果已存在 AddCors/UseCors 或 CORSMiddleware,则返回 status: "skipped"
  • 在生产环境中启用预检请求缓存——将 MaxAge 设为 86400(24 小时),以减少 OPTIONS 请求

完成标准

  • 已接收上下文存储(技术栈、项目根目录、环境)
  • 已检测前端来源(自动检测端口/框架)
  • 已收集用户决策(来源、方法、凭据、缓存时长)
  • 已生成按环境区分策略的 CORS 配置
  • 已通过安全检查清单验证(无通配符与凭据组合、明确指定方法、来源基于环境变量)
  • 已验证语法(dotnet build 或 py_compile)
  • 已向 ln-770 协调器返回结构化 JSON 响应

版本: 2.0.0 最后更新: 2026-01-10

评论

支持 Markdown