// 獲取圖片地址並轉碼
var image = new Image();
image.crossOrigin = 'Anonymous';
image.src = ‘http://qqmmsh.oss-cn-hangzhou.aliyuncs.com/apply/6113528861282912.jpg’
image.onload = function(){
var base64 = getBase64Image(image);
initVR(doc,base64);
}
訪問阿里oss圖片一直出現跨域問題。
1.在oss上防盜鏈關閉了,跨域設置都放開了。但仍是不行,仍是出現跨域問題。
緣由是在沒設置以前已經請求過這個圖片,設置後從新請求是直接從cdn緩存中拿的圖片,而cdn緩存了oss未配置cors以前的文件及其頭部,形成客戶端瀏覽器判斷失敗,不容許訪問。因此出現了跨域失敗。
2.往oss上從新上傳一張新圖片,第一次訪問成功,第二次又出現跨域問題
在用戶第一次訪問cdn,cdn會檢查數據沒有,回源到源站進行訪問。源站對比將數據通過cdn反饋給客戶端瀏覽器。瀏覽器比對Access-Control-Allow-Origin 後,容許正確,因此跨域正常。 當第二個用戶訪問時,cdn檢測有這個文件,因此會直接給客戶端反饋緩存頁面。因爲CDN之因此失敗是由於CDN緩存了OSS未配置cors以前的文件及其頭部,形成客戶端瀏覽器判斷失敗,不容許訪問。因此出現了跨域失敗。
解決辦法:
CDN直接提供了Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Max-Age
配置完以後,跨域問題就沒有了。