1. 程式人生 > >跨域圖片載入問題

跨域圖片載入問題

不是放暑假了嗎,大四要開始找工作,現在在學習。

前幾天,簡單練習一下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介面關了,,!!不做了不做了

不做了不做了以後用自己的伺服器存圖片,不浪費您豆寶貴的帶寬了