返回顶部
C

CORS

Configure Cross-Origin Resource Sharing correctly to avoid security issues and debugging pain.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
796
下载量
2
收藏
概述
安装方式
版本历史

CORS

## Preflight Triggers - Any header except: Accept, Accept-Language, Content-Language, Content-Type (with restrictions) - Content-Type other than: application/x-www-form-urlencoded, multipart/form-data, text/plain - Methods: PUT, DELETE, PATCH, or any custom method - ReadableStream in request body - Event listeners on XMLHttpRequest.upload - One trigger = preflight; simple requests skip OPTIONS entirely ## Credentials Mode - `Access-Control-Allow-Origin: *` incompatible with credentials—must specify exact origin - `Access-Control-Allow-Credentials: true` required for cookies/auth headers - Fetch: `credentials: 'include'`; XHR: `withCredentials = true` - Without credentials mode, cookies not sent even to same origin for cross-origin requests ## Wildcard Limitations - `*` doesn't match subdomains—`*.example.com` is invalid, not a pattern - Can't use `*` with credentials—specify origin dynamically from request - `Access-Control-Allow-Headers: *` works in most browsers but not all—list explicitly for compatibility - `Access-Control-Expose-Headers: *` same issue—list headers you need to expose ## Origin Validation - Check Origin header against allowlist—don't reflect blindly (security risk) - Regex matching pitfall: `example.com` matches `evilexample.com`—anchor the pattern - `null` origin: sandboxed iframes, file:// URLs—usually reject, never allow as trusted - Missing Origin header: same-origin or non-browser client—handle explicitly ## Vary Header (Critical) - Always include `Vary: Origin` when response depends on origin—even if you allow only one - Without Vary: CDN/proxy caches response for one origin, serves to others—breaks CORS - Add `Vary: Access-Control-Request-Headers, Access-Control-Request-Method` for preflight caching correctness ## Exposed Headers - By default, JS can only read: Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, Pragma - Custom headers invisible to JS unless listed in `Access-Control-Expose-Headers` - `X-Request-ID`, `X-RateLimit-*`, etc. need explicit exposure—common oversight ## Preflight Caching - `Access-Control-Max-Age: 86400` caches preflight for 24h—reduces OPTIONS traffic significantly - Chrome caps at 2 hours; Firefox at 24 hours—values above are silently reduced - Cached per origin + URL + request characteristics—not globally - Set to 0 or omit during development—caching hides config changes ## Debugging - CORS error in browser = request reached server and came back—check server logs - Preflight failure: server must return 2xx with CORS headers on OPTIONS—404/500 = failure - Opaque response in fetch: `mode: 'no-cors'` succeeds but response is empty—usually not what you want - Network tab shows CORS errors; Console shows which header is missing ## Common Server Mistakes - Only setting CORS headers on main handler, not OPTIONS—preflight fails - Setting headers after error response—CORS headers missing on 4xx/5xx breaks error handling - Proxy stripping headers—verify headers reach client, not just that server sets them - `Access-Control-Allow-Origin: "*", "https://example.com"`—must be single value, not list ## Security - Don't reflect Origin header blindly—validate against allowlist first - Private Network Access: Chrome requires `Access-Control-Allow-Private-Network: true` for localhost access from public web - CORS doesn't prevent request from being sent—just blocks response reading; server still processes it - Sensitive endpoints: don't rely on CORS alone; use authentication + CSRF tokens

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 cors-1776327305 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 cors-1776327305 技能

通过命令行安装

skillhub install cors-1776327305

下载 Zip 包

⬇ 下载 CORS v1.0.0

文件大小: 2.34 KB | 发布时间: 2026-4-17 15:39

v1.0.0 最新 2026-4-17 15:39
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部