nginx 中为 /api/v2/ 路径禁用跨域预检缓存,需在 location 块中对 options 请求不设置 access-control-max-age,并添加 cache-control: no-cache、expires: 0、pragma: no-cache 等头强制禁用缓存,同时保持其他 cors 头正常生效。

Nginx 中针对特定 API 版本路径(比如 /api/v2/)单独禁用跨域预检缓存,核心思路是:对该路径跳过 Access-Control-Max-Age 设置,并确保 OPTIONS 响应不被缓存,同时保持其他 CORS 头正常生效。这适用于某些版本接口需频繁变更跨域策略、或调试阶段要求每次预检都重新校验的场景。
针对 /api/v2/ 禁用预检缓存
在对应 location 块中,显式移除或覆盖 Access-Control-Max-Age,并添加强禁止缓存的响应头:
location ^~ /api/v2/ {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin "$http_origin" always;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization" always;
add_header Access-Control-Allow-Credentials "true" always;
# 关键:不设置 Access-Control-Max-Age,或设为 0(部分浏览器会忽略,但语义明确)
# 同时强制禁用客户端及中间件缓存该 OPTIONS 响应
add_header Cache-Control "no-cache, no-store, must-revalidate" always;
add_header Expires "0" always;
add_header Pragma "no-cache" always;
add_header Content-Length "0" always;
add_header Content-Type "text/plain; charset=utf-8" always;
return 204;
}
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
注意事项与关键细节
-
Access-Control-Max-Age缺失时,浏览器默认按 5 秒 缓存预检结果(Chrome/Firefox 行为),相当于“禁用长效缓存”; - 显式设置
Cache-Control: no-cache并配合Expires: 0和Pragma: no-cache,可防止 CDN、代理或浏览器本地缓存 OPTIONS 响应; - 使用
^~ /api/v2/而非正则匹配,确保优先级高于其他 location,避免被更宽泛规则(如/api/)覆盖; - 若上游已返回
Access-Control-Max-Age,必须在 Nginx 层用always覆盖或清空,否则可能透传旧值; - 不建议对
/api/v2/完全关闭 OPTIONS 处理(如return 403),否则前端将无法完成预检,直接报 CORS 错误。
与其他版本路径的差异化配置
若 /api/v1/ 需启用 24 小时预检缓存,可共用白名单逻辑但分离 location:
location ^~ /api/v1/ {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin "$http_origin" always;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
add_header Access-Control-Max-Age 86400 always; # ← 这里开启缓存
add_header Cache-Control "public, max-age=86400" always;
return 204;
}
proxy_pass http://backend;
}
这样就能实现不同 API 版本路径间跨域预检行为的精细隔离。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











