跳到主要内容
uencoder

Implement CORS 安全

CORS (Cross-源 Resource Sharing) allows controlled cross-源 requests. Learn 到 configure origins, 方法, headers, 和 credentials 安全.

  1. 1

    CORS allows browser 开 one 源到 请求 resources 从另一个. 服务器 responds 具有 Access-Control-允许-源 (允许 origins), Access-Control-允许-方法 (允许 HTTP 方法), Access-Control-允许-Headers (允许请求 headers), 和 Access-Control-允许-Credentials (是否 cookies 是允许). Preflight requests (OPTIONS) 检查 permissions 之前 actual 请求.

  2. 2
    URL 解析器 →

    解析 the Origin header to validate the requesting origin. Compare against a whitelist of allowed origins. Never use Access-Control-Allow-Origin: * with Access-Control-Allow-Credentials: true — this is invalid and browsers will reject it. Echo the specific origin back: Access-Control-Allow-Origin: https://example.com.

  3. 3
    哈希计算器 →

    为动态源 validation, hash 源和 比较针对集合的 允许源 hashes. 此 avoids storing raw origins 在配置和 allows O(1) lookup. Use SHA-256 为 hash. Alternatively, use regex 或 prefix 匹配为 wildcard subdomains (*.示例.com).

常见问题

应该 I use CORS * (wildcard)?
Only 为公共 APIs 无 credentials. 具有 Access-Control-允许-源: *, cookies 是不 sent (Access-Control-允许-Credentials 必须是 假), 和所有 origins 能够 access API. 为 APIs 具有认证或 sensitive 数据, 指定允许 origins explicitly. 从不 use * 具有 credentials — browsers 拒绝它.
什么是 CORS preflight?
为 "non-简单" requests (自定义 headers, 方法其他 than GET/POST/HEAD, 内容类型其他 than form/文本), browser sends OPTIONS 请求第一 (preflight). 服务器 responds 具有允许方法, headers, 和源. 如果 preflight passes, actual 请求是 sent. 简单 requests (GET 具有否 自定义 headers) 不 require preflight.

解决此任务的工作流

相关工具