이미지를로드하고 조작하려는 앱이 있습니다. 브라우저는 이미지가 앱과 동일한 출처이거나 이미지 응답이 원점 간 액세스를 허용해야합니다. 내 이미지는 CDN (AWS S3)를 통해 제공하고 있으며, 그들은 예상 Origin
헤더의 요청이있을 때 적절한 Access-Control-Allow-Origin
응답 헤더를 제공하도록 구성되어 있습니다Chrome 애플리케이션 캐시는 도메인 간 애셋 캐싱시 '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을 표시 해요 : 나는 데 문제는 자산이 앱 캐시에서로드되면, 내가 Cross-origin image load denied by Cross-Origin Resource Sharing policy
오류를 받기 시작한다는 것입니다
CACHE MANIFEST
CACHE:
http://<host url here>/image.png
.
캐시 채우기 요청과 함께 Chrome is supposed to send the appcache manifest origin을 읽었지 만, 내 경우에 chrome://net-internals
이라는 내 대담한 탐색을 기반으로하면 내 경우에는 그렇지 않습니다.
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
크롬은 CDN가 모르는 의미 Origin
헤더와 함께 요청을하지 않는 것 같습니다 : 여기
chrome://net-internals/#events
에서보고 있어요입니다 CORS 헤더로 응답하십시오. 결과적으로 Chrome은 바닐라 비 크로스 원점 액세스 응답을 캐싱하고 appcache에서 응답합니다.
모든 조언이나 통찰력을 환영합니다! 읽어 주셔서 감사합니다.
응답 해 주셔서 감사합니다. 나는 그 대답이 '무응답'이 될 것 같았습니다. 제안했던대로 티켓을 개설했습니다. https://code.google.com/p/chromium/issues/detail?id=358744&thanks=358744&ts=1396376673 – lettertwo