報錯如上圖,場景:前端同事在使用js請求時,引出來的這個問題。
就報錯而言不難解決,在對相應的桶做一個cors配置即可。但問題是依舊是報跨域的錯,配置了跨域頭未生效。
究其原因,大概率是可能在用戶第一次訪問cdn,cdn會檢查數據沒有,回源到源站進行訪問。源站對比將數據經過cdn反饋給客戶端瀏覽器。瀏覽器比對Access-Control-Allow-Origin 后,允許正確,所以跨域正常。 當第二個用戶訪問時,cdn檢測有這個文件,所以會直接給客戶端反饋緩存頁面。由於CDN之所以失敗是因為CDN緩存了OSS未配置cors之前的文件及其頭部,造成客戶端瀏覽器判斷失敗,不允許訪問。所以出現了跨域失敗。
解決辦法:
同時也要在存儲桶中配置cdn的跨域相關配置
解決方法二:
如果不對存儲桶做配置,則可以把url里的協議頭 https:// http:// 的改成 //這種自適應的