跨域圖片載入問題
不是放暑假了嗎,大四要開始找工作,現在在學習。
前幾天,簡單練習一下js,vue的使用,寫了一個獲取豆瓣圖片的靜態網頁。
寫出來之後,放到了GithubPage,自己試試挺好的。
<div id="myapp" class="center-block"> <!--{{ srcid[1] }}--> <div v-html="rawHtml+srcid[index]+two"></div> <div class="btngroup "> <button class="btn btn-primary " type="button " v-on:click="last" value="上一張 " >上一張</button> <button class="btn btn-primary " type="button " v-on:click="next" value="下一張 " >下一張</button> </div> </div>
var app = new Vue({ el: '#myapp', data: { id: '254354656', index: 1, rawHtml: '<img src="http://img3.doubanio.com/view/photo/photo/public/p', two: '.webp"/>', srcid: ["2165829219", "2165211588", "991380314", "991379352", "991377833", "991365384", "991364581", "763118511", "2179356787", "2178253951", "2172318533", "2171815401", "2165211588"] }, methods: { last: function(event) { this.index=(this.index+13+1)%13; }, next: function(event) { this.index=(this.index+13-1)%13; } } })
可是在手機,和pad上一訪問,發現圖片顯示不了,而且按鈕一點就變成輸入。
恩,需要更改
我就在想是不是手機不支援vue。(不會,不支援的話,點選按鈕頁面不會重新整理)
為什麼pc可以,手機跟pad不可以。
我就猜是不是pc瀏覽器上有快取,我把快取清理,好了,pc也看不到了,我的程式碼有問題,img標籤改了圖片不會改。
我想到了一種方法:ajax獲取之後,快取到後臺,然後img標籤更改,然後圖片就會更改。就像我之前的pc一樣。
Req.open("GET",url,false);
Req.send(null);
我把拼接好的字串傳到xmlhttprequest裡,訪問,問題出現了,瀏覽器報錯,百度翻譯之後,JavaScript禁止異域訪問!百度了
,都說要加頭部或者jsopn。
- 加頭部:加了還是不允許
- jsonp 我這個根本不是json或者文字啊,但是我也還是試了試,果然報錯,說我是webp圖片不是文字
我翻開了我的JavaScript高階設計教程第三版,恩,ajax實現通過js,ajax也預設禁止跨域訪問,跨域訪問,我的瀏覽器chrome不用
加頭部預設是支援的,傳入絕對url就可以了P584,試了試沒用但是多了一條錯403,說明request發出去了!!但是報了一個4開頭的錯
,資源不可用。
呆了一會,翻了一頁書,我勒個去,圖片預設就可以直接通過img物件訪問,還可以跨域啊。
改了改。
var img=new Image();
img.src=url;
get,一點錯都沒報,可是圖片不顯示,開啟控制檯沒問題,開啟network分析了一下請求,發現webp這個請求403了,開啟這個request
發現伺服器報了403。可是直接訪問一下webp連結沒問題,正常顯示。
同樣是瀏覽器發出的請求為什麼一個403一個200!!!
我仔細對比了request,上邊這個是頁面請求,下邊是直接輸入位址列的請求。
上圖本來沒有cookie
是cookie的問題??給頁面加了頭,設定了cookie
<meta http-equiv="cookie" content="bid=WIjdBsSLbuk">
還是不行,頁面訪問多了個refer,refer設定為null試試
<meta http-equiv="referer" content="null">
報錯,說refer不能改變。
查了查refer這個東西,!!!!refer預設不可改變。
JavaScript改變不了refer。
豆瓣通過判斷refer,把我的請求當做盜鏈處理了,就像以前qq空間首頁的圖片連結一樣。
完蛋,網上有一種解決思路,說找一個搜尋引擎跳轉,一般網站不會把來自搜尋引擎的請求當盜鏈。無果。
走正常途徑API試試??查了查豆瓣api呼叫方式,恩,需要key,行,我去申請key,發現關閉了,豆瓣把外部API介面關了,,!!不做了不做了
不做了不做了以後用自己的伺服器存圖片,不浪費您豆寶貴的帶寬了