Gist:
У меня есть страница, которая использует загрузку тега изображения из s3 (тег img
HTML), и у меня есть страница, использующая xmlhttprequest
. Загрузка тега кэшируется без заголовков CORS, и поэтому xmlhttprequest
видит кэшированную версию, проверяет ее заголовки и терпит неудачу с ошибкой перекрестного происхождения.
Детали:
edit: Не работает как в сафари 5.1.6, так и в chrome 21.0.1180.89. Отлично работает в Firefox 14.
Используя S3 new CORS, я настрою a CORSRule
так:
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>0</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
Если я запрашиваю изображение с S3 без установки источника в заголовках запроса, я возвращаю изображение без заголовков CORS в ответе.
Получите кешированные и последующие запросы CORS (тот, который задает начало в заголовке запроса) отклоняются, поскольку браузер использует версию non CORS из кеша.
Какой лучший способ решить эту проблему? Могу ли я установить что-то, чтобы версия без CORS никогда не кэшировалась? Должен ли я дифференцировать запросы CORS, добавив ?some_flag
к URL-адресу запроса?
В идеале у меня бы S3 ВСЕГДА отправляли обратно нужные заголовки CORS, даже если запрос не содержит "происхождение".