nginx配置多域名跨域

出于安全考虑, 源服务 nginx 配置http_origin变量,目的允许匹配 https://(.*).exp.com 所有的二级域名访问.
但是出现响应头 Access-Control-Allow-Origin 和 请求头 Origin 返回不一致,强制刷新多次才会正常,感觉像是缓存的问题.

image

has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value ****** that is not equal to the supplied origin.
源服务的nginx(版本:1.14.0)配置如下:
set $cors_origin "";
if ($http_origin ~ "https://(.*).exp.com") {
    set $cors_origin $http_origin;
}        
add_header Access-Control-Allow-Origin $cors_origin;
add_header Access-Control-Allow-Methods GET;
阅读 4.7k
1 个回答

看到你启用了 ETagLast-Modified ,你这个站点是否使用了CDN 呢? 你的描述,应该是和缓存有关系。
你要不要针对 RequestMethod 为OPTIONS的请求,返回一个 Cache-Control: no-cache,并且不返回 ETagLast-Modified

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题