簡體   English   中英

緩存跨域資產時,Chrome應用緩存不會發送“Origin”標頭

[英]Chrome Application Cache doesn't send `Origin` header when caching cross-domain assets

我有一個想要加載和操作圖像的應用程序。 瀏覽器要求圖像來自與應用程序相同的原點,或者圖像響應允許跨源訪問。 我的圖像通過CDN(AWS S3)提供,它們配置為在使用預期的Origin標頭請求時提供正確的Access-Control-Allow-Origin響應標頭:

GET /image.png HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, compress
Host: <aws host url here>
Origin: localhost:5000

HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Methods: GET, HEAD
Access-Control-Allow-Origin: *
Cache-Control: max-age=315360000, no-transform, public
Content-Length: 3333
Content-Type: image/png
Server: AmazonS3
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method

這可以正常工作,除了我的應用程序還有額外的能夠脫機運行的要求。 為此,我在我的應用程序緩存清單中列出了我的CDN資產URL:

CACHE MANIFEST

CACHE:
http://<host url here>/image.png

我遇到的問題是,一旦從appcache加載資產,我開始Cross-origin image load denied by Cross-Origin Resource Sharing policy錯誤獲得Cross-origin image load denied by Cross-Origin Resource Sharing policy

我已經讀過Chrome應該發送appcache清單源以及緩存填充請求,但是基於我在chrome://net-internals粗略探索,這似乎不會發生在我的情況下。

以下是我在chrome://net-internals/#events看到的緩存填充請求:

HTTP_TRANSACTION_SEND_REQUEST_HEADERS
--> GET /image.png HTTP/1.1
    Host: <aws host url here>
    Connection: keep-alive
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: en-US,en;q=0.8

HTTP_TRANSACTION_READ_RESPONSE_HEADERS
--> HTTP/1.1 200 OK
    Cache-Control: max-age=315360000, no-transform, public
    Accept-Ranges: bytes
    Content-Type: image/png
    Content-Length: 3333
    Server: AmazonS3

似乎Chrome沒有使用Origin標頭發出請求,這意味着CDN不知道使用CORS標頭進行響應。 因此(我認為),Chrome會緩存vanilla非跨域訪問響應,並通過appcache提供服務。

任何建議或見解都會非常受歡迎! 謝謝閱讀。

恐怕沒有答案。 您鏈接的錯誤未解決 - 它已存檔幾年以來沒有項目成員的任何操作。 跨源應用程序緩存請求不包括Origin標頭。

您可以在crbug.com上創建一個新問題,它可能會得到更多關注。 但是,除非我誤解了該主題 (參見第二個兼容性風險段落),我想我讀過Chrome(也許是Safari?)是唯一支持Application Cache清單中的跨源子資源的瀏覽器。 如果您將請求添加到應用程序緩存規范中,所有瀏覽器(假設有共識和支持)可能會在將來支持此操作。 改進非標准行為(以非標准方式)可能不是可行的方法,因此我不會指望Chrome在沒有規范更新的情況下實現您的請求。 另請注意,Application Cache已經獲得了一些非常負面的聲譽,Google和Mozilla現在推動的方式是Service Worker (在Chrome 40和Opera 24中實現,在Firefox中正在積極開發)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM