我想寫一個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上認爲我想發佈鏈接時,我剛寫的例子)