S3 muss immer einen Vary-Header in seine Antwort aufnehmen

9

Ich habe CORS-Header in S3 eingerichtet, und wenn ein Browser eine CORS-Anfrage ausführt (d. h. enthält einen Origin -Header), fügt S3 der Antwort alle richtigen Header hinzu, einschließlich eines Vary -Headers. Wenn die Anfrage jedoch keinen Origin - Header enthält, enthält die Antwort keinen Vary - Header, der Zwischencaches (wie CDNs) die Zwischenspeicherung der Antwort freigibt und sie auch dann bereitstellt, wenn eine spätere Anfrage eingeht wenn diese spätere Anfrage einen Origin Header hinzufügt.

Wie kann ich S3 dazu bringen, immer einen Vary Header zurückzugeben?

    
Old Pro 24.01.2014, 05:22
quelle

1 Antwort

4

Der warum ist langatmig, aber die kurze Antwort ist: Sie können nicht. Zur Zeit sowieso nicht.

[TL; DR]

In S3 ist Vary kein vom Benutzer konfigurierbarer Header. Während S3 CORS-Header liefern kann, hat CloudFront keine explizite Unterstützung dafür.

Wenn Ihr Ziel die Bereitstellung von CORS-fähigen Inhalten aus CloudFront mit S3 als Quelle ist, habe ich das Problem gelöst, indem ich eine App zwischen S3 und CloudFront bereitgestellt habe, die die Anfragen weiterleitet und immer die richtigen hinzufügt CORS-Header zu S3-Antwort, so dass CloudFront die richtigen Daten zwischenspeichert.

Pros:

  • CloudFront speichert die CORS-Antwortheader zusammen mit den S3-Daten zwischen.
  • CloudFront funktioniert weiterhin mit 100% Performance.
  • Die Proxy-App ist sehr klein und kann auf einem t1.micro ausgeführt werden.

Nachteile:

  • Nicht so einfach, wie S3 + CloudFront bei CORS-Anfragen korrekt zusammenarbeitet.
  • Schreiben und Bereitstellen der App.
Ryan Parman 27.01.2014, 01:13
quelle

Tags und Links