Memahami kebijakan header respons - Amazon CloudFront

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memahami kebijakan header respons

Anda dapat menggunakan kebijakan header respons untuk menentukan header HTTP yang CloudFront dihapus atau ditambahkan Amazon dalam tanggapan yang dikirimkan ke pemirsa. Untuk informasi selengkapnya tentang kebijakan header respons dan alasan menggunakannya, lihatMenambahkan atau menghapus header HTTP dalam CloudFront tanggapan dengan kebijakan.

Topik berikut menjelaskan pengaturan dalam kebijakan header respons. Pengaturan dikelompokkan ke dalam kategori, yang diwakili dalam topik berikut.

Rincian kebijakan (metadata)

Setelan detail kebijakan berisi metadata tentang kebijakan header respons.

  • Nama — Nama untuk mengidentifikasi kebijakan header respons. Di konsol, Anda menggunakan nama untuk melampirkan kebijakan ke perilaku cache.

  • Deskripsi (opsional) — Komentar untuk menjelaskan kebijakan header respons. Ini opsional, tetapi dapat membantu Anda mengidentifikasi tujuan kebijakan.

Header CORS

Setelan berbagi sumber daya lintas asal (CORS) memungkinkan Anda menambahkan dan mengonfigurasi header CORS dalam kebijakan header respons.

Daftar ini berfokus pada cara menentukan setelan dan nilai yang valid dalam kebijakan header respons. Untuk informasi selengkapnya tentang masing-masing header ini dan bagaimana mereka digunakan untuk permintaan dan tanggapan CORS dunia nyata, lihat berbagi sumber daya lintas asal di MDN Web Docs dan spesifikasi protokol CORS.

Access-Control-Allow-Credentials

Ini adalah pengaturan Boolean (trueataufalse) yang menentukan apakah CloudFront menambahkan Access-Control-Allow-Credentials header sebagai respons terhadap permintaan CORS. Saat pengaturan ini disetel ketrue, CloudFront tambahkan Access-Control-Allow-Credentials: true header sebagai respons terhadap permintaan CORS. Jika CloudFront tidak, tidak menambahkan header ini ke tanggapan.

Access-Control-Allow-Header

Menentukan nama header yang CloudFront digunakan sebagai nilai untuk Access-Control-Allow-Headers header dalam tanggapan terhadap permintaan preflight CORS. Nilai yang valid untuk pengaturan ini termasuk nama header HTTP atau karakter wildcard (*), yang menunjukkan bahwa semua header diperbolehkan.

catatan

AuthorizationHeader tidak dapat menggunakan wildcard dan harus terdaftar secara eksplisit.

Contoh penggunaan karakter wildcard yang valid
Contoh Akan cocok Tidak akan cocok

x-amz-*

x-amz-test

x-amz-

x-amz

x-*-amz

x-test-amz

x--amz

* Semua header kecuali Authorization Authorization
Access-Control-Allow-Methods

Menentukan metode HTTP yang CloudFront digunakan sebagai nilai untuk Access-Control-Allow-Methods header dalam tanggapan terhadap permintaan preflight CORS. Nilai yang valid adalah GETDELETE,HEAD,OPTIONS,PATCH,POST,PUT, danALL. ALLadalah nilai khusus yang mencakup semua metode HTTP yang terdaftar.

Access-Control-Allow-Origin

Menentukan nilai-nilai yang CloudFront dapat digunakan dalam header Access-Control-Allow-Origin respon. Nilai yang valid untuk pengaturan ini mencakup asal tertentu (sepertihttp://www.example.com) atau karakter wildcard (*), yang menunjukkan bahwa semua asal diperbolehkan. Lihat tabel berikut untuk contoh:

catatan

Karakter wildcard (*) diizinkan sebagai bagian paling kiri dari domain (). *.example.org

Karakter wildcard (*) tidak diizinkan di posisi berikut:

  • Domain tingkat atas () example.*

  • Di sebelah kanan sub-domain () test.*.example.org

  • Di dalam istilah (exa*mple.org)

Contoh penggunaan karakter wildcard yang valid ditunjukkan dalam tabel ini:

Contoh Akan cocok Tidak akan cocok

http://*.example.org

http://www.example.org

http://test.example.org

http://test.example.org:123

https://test.example.org

https://test.example.org:123

*.example.org

test.example.org

test.test.example.org

.example.org

http://test.example.org

https://test.example.org

http://test.example.org:123

https://test.example.org:123

example.org

http://example.org

https://example.org

http://example.org

https://example.org

http://example.org:123

http://example.org:*

http://example.org:123

http://example.org

http://example.org:1*3

http://example.org:123

http://example.org:1893

http://example.org:13

*.example.org:1*

test.example.org:123

Access-Control-Expose-Header

Menentukan nama header yang CloudFront menggunakan sebagai nilai untuk Access-Control-Expose-Headers header dalam tanggapan terhadap permintaan CORS. Nilai yang valid untuk pengaturan ini termasuk nama header HTTP atau karakter wildcard (*).

Akses-Kontrol-Max-Age

Beberapa detik, yang CloudFront digunakan sebagai nilai untuk Access-Control-Max-Age header dalam menanggapi permintaan preflight CORS.

Pengesampingan asal

Setelan Boolean yang menentukan bagaimana CloudFront perilaku ketika respons dari asal berisi salah satu header CORS yang juga ada dalam kebijakan.

  • Jika disetel ke true dan respons asal berisi header CORS yang juga ada di kebijakan, CloudFront tambahkan header CORS dalam kebijakan ke respons. CloudFront kemudian mengirimkan respons itu ke pemirsa. CloudFront mengabaikan header yang diterimanya dari asal.

  • Saat disetel ke false dan respons asal berisi header CORS (terlepas dari apakah header CORS ada dalam kebijakan), CloudFront sertakan header CORS yang diterimanya dari asal ke respons. CloudFront tidak menambahkan header CORS apa pun dalam kebijakan ke respons yang dikirim ke pemirsa.

Header keamanan

Anda dapat menggunakan pengaturan header keamanan untuk menambahkan dan mengonfigurasi beberapa header respons HTTP terkait keamanan dalam kebijakan header respons.

Daftar ini menjelaskan bagaimana Anda dapat menentukan setelan dan nilai yang valid dalam kebijakan header respons. Untuk informasi selengkapnya tentang masing-masing header ini dan bagaimana mereka digunakan dalam respons HTTP dunia nyata, lihat tautan ke MDN Web Docs.

Content-Security-Policy

Menentukan arahan kebijakan keamanan konten yang CloudFront digunakan sebagai nilai untuk header Content-Security-Policy respons.

Untuk informasi selengkapnya tentang header ini dan arahan kebijakan yang valid, lihat Content-Security-Policydi MDN Web Docs.

catatan

Nilai Content-Security-Policy header dibatasi hingga 1783 karakter.

Kebijakan Perujuk

Menentukan arahan kebijakan perujuk yang CloudFront menggunakan sebagai nilai untuk header respon. Referrer-Policy Nilai yang valid untuk pengaturan ini adalahno-referrer,no-referrer-when-downgrade,origin,origin-when-cross-origin,same-origin,strict-origin,strict-origin-when-cross-origin, danunsafe-url.

Untuk informasi selengkapnya tentang header ini dan arahan ini, lihat Referrer-Policydi MDN Web Docs.

Strict-Transport-Security

Menentukan arahan dan pengaturan yang CloudFront menggunakan sebagai nilai untuk header Strict-Transport-Security respon. Untuk pengaturan ini, Anda secara terpisah menentukan:

  • Sejumlah detik, yang CloudFront digunakan sebagai nilai untuk max-age direktif header ini

  • Pengaturan Boolean (trueataufalse) untukpreload, yang menentukan apakah CloudFront menyertakan preload direktif dalam nilai header ini

  • Pengaturan Boolean (trueataufalse) untukincludeSubDomains, yang menentukan apakah CloudFront menyertakan includeSubDomains direktif dalam nilai header ini

Untuk informasi selengkapnya tentang header ini dan arahan ini, lihat Strict-Transport-Securitydi MDN Web Docs.

X-Content-Type-Options

Ini adalah pengaturan Boolean (trueataufalse) yang menentukan apakah CloudFront menambahkan X-Content-Type-Options header ke respons. Saat pengaturan initrue, CloudFront tambahkan X-Content-Type-Options: nosniff header ke respons. Jika CloudFront tidak, tidak menambahkan header ini.

Untuk informasi selengkapnya tentang header ini, lihat X-Content-Type-Optionsdi MDN Web Docs.

X-Frame-Options

Menentukan direktif yang CloudFront menggunakan sebagai nilai untuk header X-Frame-Options respon. Nilai yang valid untuk pengaturan ini adalah DENY atauSAMEORIGIN.

Untuk informasi selengkapnya tentang header ini dan arahan ini, lihat X-Frame-Optionsdi MDN Web Docs.

Perlindungan-XSS-X

Menentukan arahan dan pengaturan yang CloudFront menggunakan sebagai nilai untuk header X-XSS-Protection respon. Untuk pengaturan ini, Anda secara terpisah menentukan:

  • X-XSS-ProtectionPengaturan 0 (menonaktifkan penyaringan XSS) atau 1 (memungkinkan penyaringan XSS)

  • Pengaturan Boolean (trueataufalse) untukblock, yang menentukan apakah CloudFront menyertakan mode=block direktif dalam nilai untuk header ini

  • URI pelaporan, yang menentukan apakah CloudFront menyertakan report=reporting URI direktif dalam nilai untuk header ini

Anda dapat menentukan true untukblock, atau Anda dapat menentukan URI pelaporan, tetapi Anda tidak dapat menentukan keduanya bersama-sama. Untuk informasi selengkapnya tentang header ini dan arahan ini, lihat X-XSS-Protectiondi MDN Web Docs.

Pengesampingan asal

Setiap pengaturan header keamanan ini berisi setelan Boolean (trueataufalse) yang menentukan bagaimana CloudFront perilaku ketika respons dari asal berisi header tersebut.

Jika setelan ini disetel ke true dan respons asal berisi header, CloudFront tambahkan header dalam kebijakan ke respons yang dikirimkan ke penampil. Ini mengabaikan header yang diterimanya dari asal.

Saat pengaturan ini disetel ke false dan respons asal berisi header, CloudFront sertakan header yang diterimanya dari asal dalam respons yang dikirimkan ke penampil.

Jika respons asal tidak berisi header, CloudFront tambahkan header dalam kebijakan ke respons yang dikirimkan ke penampil. CloudFront melakukan ini ketika pengaturan ini diatur ke true ataufalse.

Header kustom

Anda dapat menggunakan pengaturan header khusus untuk menambahkan dan mengonfigurasi header HTTP kustom dalam kebijakan header respons. CloudFront menambahkan header ini ke setiap respons yang dikembalikan ke pemirsa. Untuk setiap header kustom, Anda juga menentukan nilai untuk header, meskipun menentukan nilai adalah opsional. Hal ini karena CloudFront dapat menambahkan header respon tanpa nilai.

Setiap header kustom juga memiliki pengaturan penggantian Origin sendiri:

  • Jika setelan ini disetel ke true dan respons asal berisi header kustom yang ada di kebijakan, CloudFront tambahkan header kustom dalam kebijakan ke respons yang dikirimkan ke penampil. Ini mengabaikan header yang diterimanya dari asal.

  • Saat setelan ini false dan respons asal berisi header kustom yang ada di kebijakan, CloudFront sertakan header kustom yang diterimanya dari asal dalam respons yang dikirimkan ke penampil.

  • Jika respons asal tidak berisi header kustom yang ada di kebijakan, CloudFront tambahkan header kustom dalam kebijakan ke respons yang dikirimkan ke penampil. CloudFront melakukan ini ketika pengaturan ini diatur ke true ataufalse.

Hapus header

Anda dapat menentukan header yang CloudFront ingin Anda hapus dari respons yang diterimanya dari asal sehingga header tidak disertakan dalam tanggapan yang CloudFront dikirim ke pemirsa. CloudFront menghapus header dari setiap respons yang dikirimkan ke pemirsa, baik objek disajikan dari CloudFront cache atau dari asal. Misalnya, Anda dapat menghapus header yang tidak berguna untuk browser, seperti X-Powered-By atauVary, sehingga CloudFront menghapus header ini dari tanggapan yang dikirimkan ke pemirsa.

Saat Anda menentukan header yang akan dihapus menggunakan kebijakan header respons, CloudFront hapus header terlebih dahulu, lalu tambahkan header apa pun yang ditentukan di bagian lain dari kebijakan header respons (header CORS, header keamanan, header khusus, dll.). Jika Anda menentukan header yang akan dihapus tetapi juga menambahkan header yang sama di bagian lain kebijakan, CloudFront sertakan header dalam respons yang dikirimkan ke pemirsa.

catatan

Anda dapat menggunakan kebijakan header respons untuk menghapus Server dan Date header yang CloudFront diterima dari asal, sehingga header ini (sebagaimana diterima dari asal) tidak disertakan dalam tanggapan yang CloudFront dikirimkan ke pemirsa. Namun, jika Anda melakukannya, CloudFront tambahkan versinya sendiri dari header ini ke tanggapan yang dikirimkan ke pemirsa. Untuk Server header yang CloudFront menambahkan, nilai header adalahCloudFront.

Header yang tidak dapat Anda hapus

Anda tidak dapat menghapus header berikut menggunakan kebijakan header respons. Jika Anda menentukan header ini di bagian Hapus header dari kebijakan header respons (ResponseHeadersPolicyRemoveHeadersConfigdi API), Anda akan menerima kesalahan.

  • Connection

  • Content-Encoding

  • Content-Length

  • Expect

  • Host

  • Keep-Alive

  • Proxy-Authenticate

  • Proxy-Authorization

  • Proxy-Connection

  • Trailer

  • Transfer-Encoding

  • Upgrade

  • Via

  • Warning

  • X-Accel-Buffering

  • X-Accel-Charset

  • X-Accel-Limit-Rate

  • X-Accel-Redirect

  • X-Amz-Cf-.*

  • X-Amzn-Auth

  • X-Amzn-Cf-Billing

  • X-Amzn-Cf-Id

  • X-Amzn-Cf-Xff

  • X-Amzn-ErrorType

  • X-Amzn-Fle-Profile

  • X-Amzn-Header-Count

  • X-Amzn-Header-Order

  • X-Amzn-Lambda-Integration-Tag

  • X-Amzn-RequestId

  • X-Cache

  • X-Edge-.*

  • X-Forwarded-Proto

  • X-Real-Ip

Header Pengaturan Waktu Server

Gunakan pengaturan Server-Timing header untuk mengaktifkan Server-Timing header dalam respons HTTP yang dikirim dari CloudFront. Anda dapat menggunakan header ini untuk melihat metrik yang dapat membantu Anda mendapatkan wawasan tentang perilaku dan kinerja CloudFront dan asal Anda. Misalnya, Anda dapat melihat layer cache mana yang menyajikan hit cache. Atau, Anda dapat melihat latensi byte pertama dari asal jika ada cache yang hilang. Metrik di Server-Timing header dapat membantu Anda memecahkan masalah atau menguji efisiensi konfigurasi asal atau asal Anda CloudFront .

Untuk informasi selengkapnya tentang menggunakan Server-Timing header dengan CloudFront, lihat topik berikut.

Untuk mengaktifkan Server-Timing header, buat (atau edit) kebijakan header respons.

Tingkat pengambilan sampel dan header permintaan Pragma

Saat mengaktifkan Server-Timing header dalam kebijakan header respons, Anda juga menentukan laju pengambilan sampel. Sampling rate adalah angka 0-100 (inklusif) yang menentukan persentase respons yang CloudFront ingin Anda tambahkan header. Server-Timing Saat Anda menyetel laju pengambilan sampel ke 100, CloudFront tambahkan Server-Timing header ke respons HTTP untuk setiap permintaan yang cocok dengan perilaku cache yang dilampirkan oleh kebijakan header respons. Saat Anda menyetelnya ke 50, CloudFront tambahkan header ke 50% respons untuk permintaan yang cocok dengan perilaku cache. Anda dapat mengatur laju pengambilan sampel ke angka 0-100 dengan hingga empat tempat desimal.

Ketika laju pengambilan sampel diatur ke angka yang lebih rendah dari 100, Anda tidak dapat mengontrol respons mana yang CloudFront menambahkan Server-Timing header, hanya persentasenya. Namun, Anda dapat menambahkan Pragma header dengan nilai yang disetel ke server-timing dalam permintaan HTTP untuk menerima Server-Timing header dalam respons terhadap permintaan tersebut. Ini berfungsi tidak peduli berapa laju pengambilan sampel diatur. Bahkan ketika laju pengambilan sampel diatur ke nol (0), CloudFront tambahkan Server-Timing header ke respons jika permintaan berisi Pragma: server-timing header.

Header Server-Timing dari asal

Ketika ada cache yang hilang dan CloudFront meneruskan permintaan ke asal, asal mungkin menyertakan Server-Timing header dalam responsnya. CloudFront Dalam hal ini, CloudFront tambahkan metriknya ke Server-Timing header yang diterimanya dari asal. Respons yang CloudFront dikirim ke penampil berisi satu Server-Timing header yang mencakup nilai yang berasal dari asal dan metrik yang CloudFront ditambahkan. Nilai header dari asal mungkin berada di akhir, atau di antara dua set metrik yang CloudFront ditambahkan ke header.

Ketika ada hit cache, respons yang CloudFront dikirim ke penampil berisi satu Server-Timing header yang hanya menyertakan CloudFront metrik dalam nilai header (nilai dari asal tidak disertakan).

Metrik header Waktu Server

Saat CloudFront menambahkan Server-Timing header ke respons HTTP, nilai header berisi satu atau beberapa metrik yang dapat membantu Anda mendapatkan wawasan tentang perilaku dan kinerja CloudFront dan asal Anda. Daftar berikut berisi semua metrik dan nilai potensinya. Server-TimingHeader hanya berisi beberapa metrik ini, tergantung pada sifat permintaan dan respons melalui CloudFront.

Beberapa metrik ini disertakan dalam Server-Timing header dengan nama saja (tidak ada nilai). Yang lain adalah nama dan nilai. Ketika metrik memiliki nilai, nama dan nilai dipisahkan oleh titik koma (). ; Ketika header berisi lebih dari satu metrik, metrik dipisahkan oleh koma (),.

cdn-cache-hit

CloudFront memberikan respons dari cache tanpa membuat permintaan ke asal.

cdn-cache-refresh

CloudFront memberikan respons dari cache setelah mengirim permintaan ke asal untuk memverifikasi bahwa objek yang di-cache masih valid. Dalam hal ini, CloudFront tidak mengambil objek lengkap dari asal.

cdn-cache-miss

CloudFront tidak memberikan respons dari cache. Dalam hal ini, CloudFront meminta objek lengkap dari asal sebelum mengembalikan respon.

cdn-pop

Berisi nilai yang menjelaskan CloudFront point of presence (POP) mana yang menangani permintaan.

cdn-rid

Berisi nilai dengan pengenal CloudFront unik untuk permintaan tersebut. Anda dapat menggunakan pengenal permintaan (RID) ini saat memecahkan masalah AWS Support

cdn-hit-layer

Metrik ini hadir saat CloudFront memberikan respons dari cache tanpa membuat permintaan ke asal. Ini berisi salah satu nilai berikut:

  • EDGE — CloudFront memberikan respons cache dari lokasi POP.

  • REC — CloudFront memberikan respons cache dari lokasi regional edge cache (REC).

  • Origin Shield — CloudFront memberikan respons cache dari REC yang bertindak sebagai Origin Shield.

cdn-upstream-layer

Saat CloudFront meminta objek lengkap dari asal, metrik ini hadir dan berisi salah satu nilai berikut:

  • EDGE — Lokasi POP mengirim permintaan langsung ke asal.

  • REC — Lokasi REC mengirim permintaan langsung ke asal.

  • Origin Shield — REC yang bertindak sebagai Origin Shield mengirim permintaan langsung ke asal.

cdn-upstream-dns

Berisi nilai dengan jumlah milidetik yang dihabiskan untuk mengambil catatan DNS untuk asal. Nilai nol (0) menunjukkan bahwa CloudFront menggunakan hasil DNS cache atau menggunakan kembali koneksi yang ada.

cdn-upstream-connect

Berisi nilai dengan jumlah milidetik antara saat permintaan DNS asal selesai dan koneksi TCP (dan TLS, jika ada) ke asal selesai. Nilai nol (0) menunjukkan bahwa CloudFront menggunakan kembali koneksi yang ada.

cdn-upstream-fbl

Berisi nilai dengan jumlah milidetik antara saat permintaan HTTP asal selesai dan ketika byte pertama diterima dalam respons dari asal (latensi byte pertama).

cdn-downstream-fbl

Berisi nilai dengan jumlah milidetik antara saat lokasi tepi selesai menerima permintaan dan saat mengirim byte pertama respons ke penampil.

Contoh header Server-Timing

Berikut ini adalah contoh Server-Timing header yang mungkin diterima oleh penampil CloudFront saat pengaturan Server-Timing header diaktifkan.

contoh — cache terlewatkan

Contoh berikut menunjukkan Server-Timing header yang mungkin diterima oleh penampil saat objek yang diminta tidak ada dalam CloudFront cache.

Server-Timing: cdn-upstream-layer;desc="EDGE",cdn-upstream-dns;dur=0,cdn-upstream-connect;dur=114,cdn-upstream-fbl;dur=177,cdn-cache-miss,cdn-pop;desc="PHX50-C2",cdn-rid;desc="yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg==",cdn-downstream-fbl;dur=436

Server-TimingHeader ini menunjukkan hal berikut:

  • Permintaan asal dikirim dari lokasi CloudFront point of presence (POP) (cdn-upstream-layer;desc="EDGE").

  • CloudFront menggunakan hasil DNS cache untuk asal ()cdn-upstream-dns;dur=0.

  • Butuh 114 milidetik CloudFront untuk menyelesaikan koneksi TCP (dan TLS, jika ada) ke origin (). cdn-upstream-connect;dur=114

  • Butuh 177 milidetik CloudFront untuk menerima byte pertama respons dari asal, setelah menyelesaikan permintaan ()cdn-upstream-fbl;dur=177.

  • Objek yang diminta tidak CloudFront ada di cache (cdn-cache-miss).

  • Permintaan diterima di lokasi tepi yang diidentifikasi oleh kode PHX50-C2 (cdn-pop;desc="PHX50-C2").

  • ID CloudFront unik untuk permintaan ini adalah yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg== (cdn-rid;desc="yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg==").

  • Butuh 436 milidetik CloudFront untuk mengirim byte pertama respons ke pemirsa, setelah menerima permintaan penampil ()cdn-downstream-fbl;dur=436.

contoh — tembolok

Contoh berikut menunjukkan Server-Timing header yang mungkin diterima oleh penampil saat objek yang diminta berada dalam CloudFront cache.

Server-Timing: cdn-cache-hit,cdn-pop;desc="SEA19-C1",cdn-rid;desc="nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g==",cdn-hit-layer;desc="REC",cdn-downstream-fbl;dur=137

Server-TimingHeader ini menunjukkan hal berikut:

  • Objek yang diminta ada di cache (cdn-cache-hit).

  • Permintaan diterima di lokasi tepi yang diidentifikasi oleh kode SEA19-C1 (cdn-pop;desc="SEA19-C1").

  • ID CloudFront unik untuk permintaan ini adalah nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g== (cdn-rid;desc="nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g==").

  • Objek yang diminta di-cache di lokasi cache tepi regional (REC) (cdn-hit-layer;desc="REC").

  • Butuh 137 milidetik CloudFront untuk mengirim byte pertama respons ke pemirsa, setelah menerima permintaan penampil ()cdn-downstream-fbl;dur=137.