CocosCreator實用(一)cc.loader.load 下載圖片跨域問題

CocosCreator 下載網絡圖片時報錯:

Access to Image at ‘http://…/download/img/ranking/beihai.png’ from origin ‘http://localhost:7456’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:7456’ is therefore not allowed access.

大致意思就是:來自源’http://localhost:7456’的圖片資源請求’http://…/download/img/ranking/beihai.png’已被跨源協議 攔截:請求中頭缺少‘Access-Control-Allow-Origin’,因此源’http://localhost:7456’不允許訪問。

報以上錯誤 是因爲圖片存放的服務器不允許跨域訪問,所以圖片存的服務器要設置允許跨域就能下載圖片了。

然後下載圖片的這個方法:

cc.loader.load(url, async function(err, texture){
   if(err){
              console.log("圖片下載失敗", url, err);
              return;
    }

    let frame = new cc.SpriteFrame(texture);
    if (ImgNode.isValid){ImgNode.getComponent(cc.Sprite).spriteFrame = frame;}
});

這個是url必須有後綴的情況下使用的下載方法,但是微信的頭像鏈接是沒有後綴的,網上有個方法就是url+“?aa=aa.jpg”。

鏈接問號後面加的東西是參數,服務器選擇性處理,因爲cocos這裏圖片下載是必須加後綴;而微信頭像存的就是沒有後綴的,加了後綴就不是正確鏈接了。這是一個圖片url,但實際上我們又不改變它的實際鏈接。

注:之後發現Android可以下載圖片了,ios有些圖片可以下,有些圖片下載失敗,後來就把http改成 https就可以完美下載了 。

域名或 端口號不同就是 跨域;相同域名、相同協議 、端口號相同就是 同域。

同源策略 :
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章