我想写一个nginx配置,它将处理http和https上的两个站点,它似乎只要一个客户端永远不会访问这两个站点,但如果他们确实存在缓存/跨站点问题。NGINX,ssl,CORS和Access-Control-Allow-Origin跨域缓存
# Allow cross origin
location ~* \.(eot|svg|ttf|woff|woff2|json)$ {
if ($http_origin ~* (https?://(admin\.)?example\.com(:[0-9]+)?)) {
add_header 'Access-Control-Allow-Origin' "$http_origin";
}
}
所以,如果我加载example.com,一切正常,但是当我加载admin.example.com我得到这样
(指数)的问题:1周的XMLHttpRequest不能加载 http://origin.example.com/js/data-lib/currency.json。 'Access-Control-Allow-Origin'头部的值为'http://示例。 com'不等于提供的原点。 Origin'http:// admin。例如。 com'因此不被允许访问。
就在我可以告诉这是因为浏览器缓存了原始请求与它的头部,现在它拒绝我,即使服务器的另一个请求将允许它。证明是,如果我在Chrome开发人员工具中检查Disable Cache,那么问题就不会发生。
我该如何解决这个问题?是否有可能在一个配置中执行多个域名+ ssl/http全部,还是有必要根据请求的域名和协议将其分开?
(很抱歉,在我的例子可怕的空间,显然StackOverflow上认为我想发布链接时,我刚写的例子)