Заголовки Amazon S3 CORS отображаются только во время OPTIONS (предполетный), а не во время запроса GET - программирование
Подтвердить что ты не робот

Заголовки Amazon S3 CORS отображаются только во время OPTIONS (предполетный), а не во время запроса GET

У меня есть ведро S3 со следующей конфигурацией CORS.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Проверка перед пологом работает, как ожидалось.

★ ~$ curl -i -X OPTIONS -H "Origin: http://stackoverflow.com" -H "Access-Control-Request-Method: GET" https://s3.amazonaws.com/random-stuff-ohyea/coderot.gif
HTTP/1.1 200 OK
x-amz-id-2: H6tzMUCJtYgiCRrhj5DucMhjjYtj1kKWqL7u2yaRGEorOeKhu/sTKlgGqY7uHxQC
x-amz-request-id: E784C4373565CBE6
Date: Mon, 21 Oct 2013 22:14:18 GMT
Access-Control-Allow-Origin: http://stackoverflow.com
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Access-Control-Allow-Credentials: true
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
Content-Length: 0
Server: AmazonS3

Однако заголовок источника в запросе GET не делает.

★ ~$ curl -iI -H "Origin: http://stackoverflow.com" https://s3.amazonaws.com/random-stuff-ohyea/coderot.gif
HTTP/1.1 200 OK
x-amz-id-2: KlrSviRSwq/40zPwOGp2/lJZk0J2Fyu7kOg966osOvQ2mpbpiv5BLkihGSOfoLd8
x-amz-request-id: 9D051B0001F48AB7
Date: Mon, 21 Oct 2013 22:11:57 GMT
Last-Modified: Mon, 21 Oct 2013 22:10:53 GMT
ETag: "4fa16333380378e116479646b40dd1ee"
Accept-Ranges: bytes
Content-Type: image/gif
Content-Length: 1774246
Server: AmazonS3

Это связано с тем, что firefox, похоже, не выполняет предполетные проверки при загрузке удаленных шрифтов, которые у меня есть в моем ведомости s3. Кажется, что отправляет исходный заголовок.

4b9b3361

Ответ 1

С вашим параметром curl -iI вы будете делать запрос HEAD, а не запрос GET. Таким образом, вы не получите заголовки CORS. Чтобы упростить тестирование, добавьте <AllowedMethod>HEAD</AllowedMethod> в конфигурацию CORS, и вы получите ожидаемые результаты.