2012-04-25 72 views
2

我正在使用這樣的事情來通過jquery ajax獲取圖像。

$.ajax({ 
    url: imageurl, 
    type:'GET', 
    contentType: 'image/png', 
    success: success, 
    error: error, 
    timeout: 5000 
}); 

我可以看到我的請求頭包括

訪問控制請求報頭:起源,內容類型,接受

在另一方面,如果我設置up像一個img元素

<img src="imageurl" ... 

並觀察請求頭我沒有看到任何「Access Control R equest Headers「。

只是想知道$ .ajax()添加這個頭的原因是什麼。爲什麼它添加這個圖像應該是一個有效的跨站點HTTP請求。這是一個很好的做法,甚至可能刪除這個頭?

+1

而不是去設置ajax請求的麻煩,爲什麼不只是使用src加載圖像。您可以附加一個onload事件來處理您擁有的成功功能。類似這樣的東西:http://stackoverflow.com/questions/4285042/can-jquery-ajax-load-image – scrappedcola 2012-04-25 22:57:36

+0

@scrappedcola謝謝,但我需要超時,所以我無法使用加載() – zero7 2012-04-26 01:11:26

回答

1

使用XMLHttpRequest訪問的任何內容都將具有這些標題,無論它是否爲圖像。關鍵部分是請求的起源(一個腳本而不是'img'標籤)。

這個頭文件實際上是由瀏覽器創建的,所以,不,它不可能通過jquery刪除它。

過去,腳本不允許執行跨站點HTTP請求,而這些標頭是新的「跨源共享」功能的一部分。請參閱:https://developer.mozilla.org/en/http_access_control

請注意,它可能有可能通過使用jquery生成'img'標記,它可能會以您想要的方式操縱。我還沒有嘗試過,但它是值得一試..

+1

我只想第二個事實是,通過創建一個圖片標籤,我可以同時讓Chrome和Firefox正確發送Origin頭像。優秀的想法來生成圖像標籤。 – dougBTV 2014-03-27 00:34:17