cors是浏览器同源策略下的跨域协商机制,非安全防护手段;需显式指定可信origin、限制http方法与请求头、可控处理预检请求,并在启用凭证时严格校验来源及cookie属性。

CORS 本身不是用来“保护”API 的安全机制,而是浏览器执行同源策略时,由服务器主动声明“允许谁来跨域访问我”的协商规则。它不加密数据、不验证身份、也不替代鉴权,但配置得当,能有效缩小攻击面——比如防止恶意网站偷偷调用你内网的管理接口。
明确允许可信来源,禁用通配符 *
企业内网 API 通常只供内部前端(如 https://admin.corp.local 或 http://10.20.30.40:8080)调用。后端必须显式指定 Origin,不能用 Access-Control-Allow-Origin: *,尤其当启用凭证(cookie、token)时,浏览器会直接拒绝。
- 正确写法(Express 示例):
res.setHeader('Access-Control-Allow-Origin', 'https://admin.corp.local'); - 若前端有多个合法域名(如测试/预发/生产),需动态校验 Origin 请求头,白名单匹配后才写入响应头
- 避免把内网 IP 或 localhost 暴露给外部环境;上线前检查配置是否误用了开发值
严格限制方法与请求头
大多数内网 API 只需要 GET 和 POST。禁止不必要的 HTTP 方法(如 PUT、DELETE、TRACE),并只开放必需的自定义头(如 X-Internal-Token),能降低被滥用的风险。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 设置
Access-Control-Allow-Methods: GET, POST,不包含 OPTIONS 以外的其他动词 - 只声明业务真正用到的头:
Access-Control-Allow-Headers: Content-Type, X-Internal-Token - 禁用危险头字段(如
Access-Control-Allow-Headers: *),该写法在多数浏览器中已被废弃或无效
预检请求(OPTIONS)必须可控响应
带凭证或自定义头的请求会触发预检。如果后端没正确处理 OPTIONS 路由,前端会卡在预检失败,而攻击者可能利用未加固的 OPTIONS 接口探测路径或绕过限制。
- 为所有 API 路径统一添加 OPTIONS 处理中间件,返回 204 状态码
- 不在 OPTIONS 响应中返回敏感信息(如真实后端版本、内部服务名)
- 记录异常 OPTIONS 请求(如来源非白名单、请求头含可疑字段),纳入安全监控
配合凭证与安全上下文使用
内网系统常依赖 cookie 或内部 token 认证。开启 Access-Control-Allow-Credentials: true 时,必须同时满足:Origin 不能是 *;前端 fetch 必须显式设 credentials: 'include';且 Cookie 需标记 SameSite=Strict 或 SameSite=Lax。
- 确保登录态 Cookie 设置了
Domain=corp.local和Secure(HTTPS 环境下) - 避免在公共子域(如
public.corp.local)上托管不可信内容,防止被利用进行侧信道攻击 - 对高敏接口(如权限变更、数据导出),额外叠加 IP 白名单或二次确认机制,不单靠 CORS
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










