2013-10-21 14 views
10

के दौरान नहीं, मेरे पास निम्न CORS कॉन्फ़िगरेशन के साथ एक S3 बाल्टी है।अमेज़ॅन एस 3 सीओआरएस हेडर केवल विकल्प के दौरान दिखाए जाते हैं (प्रीफलाइट) और जीईटी अनुरोध

<?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 

हालांकि जीईटी अनुरोध पर मूल शीर्षलेख नहीं है।

★ ~$ 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 

यह मायने रखती है क्योंकि फ़ायरफ़ॉक्स जब दूरस्थ फोंट मैं अपने S3 बाल्टी में है कि लोड हो रहा है preflight जांच कर प्रतीत नहीं होता है। यह केवल मूल शीर्षलेख भेजता प्रतीत होता है।

+2

आगे डीबगिंग से पता चलता है कि अगर मैं अपने अनुरोध में "एक्सेस-कंट्रोल-रिक्वेस्ट-मेथड: मेथड: हेडर" हेडर शामिल करता हूं तो मुझे सही सीओआरएस हेडर वापस मिलते हैं, फ़ायरफ़ॉक्स हालांकि ऐसा नहीं करता है। – reconbot

+1

डिफॉल्ट रूप से एक गैर-फैंसी जीईटी अनुरोध प्रीफलाइट चेक नहीं करता है। [डब्ल्यू 3 स्पेक] (http://www.w3.org/TR/cors/#cross-origin-request-with-preflight-0), [एमडीएन] (https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS # Preflighted_requests) –

उत्तर

4

अपने कर्ल-आईआई विकल्प के साथ आप एक हेड अनुरोध कर रहे हैं और जीईटी अनुरोध नहीं करेंगे। तो आपको सीओआरएस हेडर नहीं मिलेगा। परीक्षण को सरल बनाने के लिए 0 C32Sको अपने CORS कॉन्फ़िगरेशन में जोड़ें और आपको अपेक्षित परिणाम मिलेंगे।

संबंधित मुद्दे