我有一個上的負載或錯誤事件等待img標籤的功能IMG錯誤事件。有時,我得到一個錯誤事件,並且img標籤的naturalWidth和naturalHeight都等於零。奇怪的是,在chrome的開發人員工具中查看網絡選項卡,圖像請求的狀態代碼是302,並且重定向的請求以200狀態正常返回。 (實際的圖像存儲在S3上,但我們的服務器在那裏重定向)。獲取已加載
另外的問題實際上顯示,但無法正常,因爲我使用naturalWidth和naturalHeight來計算圖像的一些CSS屬性。
我也得到了一個錯誤說「跨源圖像負荷由跨來源資源共享策略拒絕。」我不確定這是相關的,還是甚至指的是相同的圖像。
我特別困惑,因爲它永遠只能在一系列發生在第一個圖像,有時只發生。
有誰知道是怎麼回事,或者至少如何找出是什麼原因造成的錯誤事件?
UPDATE:
的S3桶和服務器重定向都被配置爲支持CORS。但是,似乎每當發生這種情況時,瀏覽器正在使用沒有Access-Control-Allow-Origin標頭的緩存圖像。我相信發生的事情是,在應用程序的較早版本中,我們請求的圖像不使用CORS,因此沒有標題,那麼此時我們使用CORS,但是我們點擊了未通過CORS檢索的緩存版本。我仍然不知道如何解決這個問題。我不能100%確定那是發生了什麼事,雖然我很確定它與緩存和跨源請求有關。
我也仍然搞不清楚爲什麼我收到兩個錯誤和負載事件爲同一img標籤,和圖像實際顯示。此外,即使調用加載事件處理函數,this.complete也是false,this.naturalWidth和this.naturalHeight爲零。
我發現,我收到跨域錯誤的原因是因爲當我在背景圖像的CSS屬性使用像這(在我的更新中提到)緩存響應的分區。但是,我將此打開,因爲我仍然不明白爲什麼我會收到錯誤事件,即使圖像明顯可見。 – Thayne