View a markdown version of this page

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 dihapus atau ditambahkan Amazon CloudFront 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

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

Daftar ini berfokus pada cara menentukan pengaturan 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 Dokumen Web MDN dan spesifikasi protokol CORS. https://fetch.spec.whatwg.org/#http-cors-protocol

Access-Control-Allow-Credentials

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

Access-Control-Allow-Headers

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

catatan

AuthorizationHeader tidak dapat menggunakan wildcard dan harus dicantumkan 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 menanggapi 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 yang CloudFront dapat digunakan dalam header Access-Control-Allow-Origin respons. Nilai yang valid untuk pengaturan ini mencakup asal tertentu (sepertihttp://www.example.com) atau karakter wildcard (*), yang menunjukkan bahwa semua asal diperbolehkan.

Catatan
  • Karakter wildcard (*) diperbolehkan sebagai subdomain paling kiri (). *.example.org

  • Karakter wildcard (*) tidak diperbolehkan di posisi berikut:

    • Top-level domain (example.*)

    • Di sebelah kanan subdomain (test.*.example.org) atau dalam subdomain apa pun () *test.example.org

    • Di dalam istilah (exa*mple.org)

Untuk contoh cara menggunakan karakter wildcard, lihat tabel berikut.

Contoh Akan cocok Tidak akan cocok

http://*.example.org

http://www.example.org

http://test.example.org

https://test.example.org

https://test.example.org:123

http://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-Headers

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

Access-Control-Max-Age

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

Penggantian asal

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

  • Saat diset true el ke dan respon 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.

  • Ketika diset false el ke dan respon asal berisi header CORS (terlepas dari apakah header CORS ada dalam kebijakan), menyer CloudFront takan header CORS yang diterimanya dari asal ke respons. CloudFront tidak menambahkan header CORS apa pun dalam kebijakan ke respons yang dikirim ke penampil.

Header keamanan

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

Daftar ini menjelaskan cara 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 Dokumen Web MDN.

Content-Security-Policy

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

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

catatan

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

Referrer-Policy

Menentukan direktif kebijakan perujuk CloudFront yang digunakan sebagai nilai untuk header Referrer-Policy respons. Nilai yang valid untuk pengaturan ini adalah no-referrerno-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-Policy di MDN Web Docs.

Strict-Transport-Security

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

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

  • Pengaturan Boolean (trueataufalse) untukpreload, yang menentukan apakah menyer CloudFront takan direk preload tif dalam nilai header ini

  • Pengaturan Boolean (trueataufalse) untukincludeSubDomains, yang menentukan apakah menyer CloudFront takan direk includeSubDomains tif dalam nilai header ini

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

X-Content-Type-Options

Ini adalah pengaturan Boolean (trueataufalse) yang menentukan apakah CloudFront menambahkan X-Content-Type-Options header ke respons. Ketika 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-Options di MDN Web Docs.

X-Frame-Options

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

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

X-XSS-Protection

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

  • Peng X-XSS-Protection aturan 0 (menonaktifkan penyaringan XSS) atau 1 (mengaktifkan pemfilteran XSS)

  • Pengaturan Boolean (trueataufalse) untukblock, yang menentukan apakah menyer CloudFront takan direktif mode=block 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-Protection di MDN Web Docs.

Penggantian asal

Masing-masing pengaturan header keamanan ini berisi pengaturan Boolean (trueataufalse) yang menentukan bagaimana CloudFront berperilaku ketika respons dari asal berisi header tersebut.

Bila setelan ini diset true el ke dan respon asal berisi CloudFront header, tambahkan header dalam kebijakan ke respons yang dikirimkan ke penampil. CloudFront akan mengabaikan header yang diterima dari asal.

Ketika pengaturan ini diset false el ke dan respons asal berisi header, CloudFront sertakan header yang diterima dari asal dalam respons yang dikirimkannya ke penampil.

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

Header kustom

Anda dapat menggunakan setelan 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. Ini karena CloudFront dapat menambahkan header respons tanpa nilai.

Setiap header kustom juga memiliki pengaturan peng gantian Origin sendiri:

  • Jika setelan ini diset true el ke dan respons asal berisi header kustom yang ada di kebijakan CloudFront , tambahkan header kustom dalam kebijakan ke respons yang dikirimkan ke penampil. CloudFront akan mengabaikan header yang diterima dari asal.

  • Jika pengaturan ini false dan respons asal berisi header kustom yang ada di kebijakan, ser CloudFront takan header kustom yang diterima 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 disetel ke true ataufalse.

Menghapus header

Anda dapat menentukan header yang CloudFront ingin Anda hapus dari tanggapan yang diterimanya dari asal sehingga header tidak disertakan dalam tanggapan yang dikirim ke pemir CloudFront sa. CloudFront menghapus header dari setiap respons yang dikirimkannya ke pemirsa, apakah 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 dikirim ke pemirsa.

Saat Anda menentukan header yang akan dihapus menggunakan kebijakan header respons, hapus header CloudFront terlebih dahulu, lalu tambahkan header apa pun yang ditentukan di bagian lain dari kebijakan header respons (header CORS, header keamanan, header kustom, dan sebagainya). Jika Anda menentukan header untuk dihapus tetapi juga menambahkan header yang sama di bagian lain kebijakan, ser CloudFront takan header dalam tanggapan yang dikirim ke pemirsa.

catatan

Anda dapat menggunakan kebijakan header respons untuk menghapus Date header Server dan yang CloudFront diterima dari sumber, sehingga header ini (sebagaimana diterima dari asal) tidak disertakan dalam tanggapan yang dikirim ke pemirsa CloudFront . Namun, jika Anda melakukannya, tambahkan CloudFront versi header ini sendiri ke tanggapan yang dikirimkannya 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 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-Edge-.*

  • X-Forwarded-Proto

  • X-Real-Ip

Server-Timing tajuk

Gunakan pengaturan Server-Timing header untuk mengaktifkan Server-Timing header dalam tanggapan 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 lapisan cache yang menyajikan cache hit. Atau, Anda dapat melihat latensi byte pertama dari asal jika ada kesalahan cache. Metrik di Server-Timing header dapat membantu Anda memecahkan masalah atau menguji efisiensi konfigurasi CloudFront atau konfigurasi asal Anda.

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 Anda mengaktifkan Server-Timing header dalam kebijakan header respons, Anda juga menentukan tingkat pengambilan sampel. Tingkat pengambilan sampel adalah angka 0-100 (inklusif) yang menentukan persentase respons yang CloudFront ingin Anda tambahkan Server-Timing header. Saat Anda menyetel tingkat pengambilan sampel ke 100, CloudFront menambahkan Server-Timing header ke respons HTTP untuk setiap permintaan yang cocok dengan perilaku cache yang dilampirkan kebijakan header respons. Ketika Anda mengaturnya ke 50, CloudFront menambahkan header ke 50% dari tanggapan untuk permintaan yang cocok dengan perilaku cache. Anda dapat mengatur laju pengambilan sampel ke angka 0-100 dengan hingga empat tempat desimal.

Bila tingkat pengambilan sampel disetel 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 diset server-timing el ke dalam permintaan HTTP untuk menerima Server-Timing header dalam respons terhadap permintaan itu. Ini berfungsi tidak peduli berapa laju pengambilan sampel yang diatur. Bahkan ketika tingkat pengambilan sampel diatur ke nol (0), CloudFront menambahkan Server-Timing header ke respons jika permintaan berisi Pragma: server-timing header.

Server-Timing header dari asal

Ketika ada cache yang melewatkan CloudFront dan 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 menyertakan 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 dikirim CloudFront ke penampil berisi satu Server-Timing header yang hanya menyertakan CloudFront metrik dalam nilai header (nilai dari asal tidak disertakan).

Server-Timing metrik header

Saat CloudFront menambahkan Server-Timing header ke respons HTTP, nilai header berisi satu atau lebih 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 (tanpa nilai). Lainnya 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 tanggapan dari cache. Dalam hal ini, CloudFront meminta objek lengkap dari asal sebelum mengembalikan respons.

cdn-pop

Berisi nilai yang menjelaskan CloudFront titik kehadiran (POP) mana yang menangani permintaan.

cdn-rid

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

lapisan cdn-hit

Metrik ini hadir ketika 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 menyediakan respons cache dari lokasi cache tepi regional (REC).

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

lapisan atas cdn

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 yang di-cache atau menggunakan kembali koneksi yang ada.

cdn-upstream-sambungkan

Berisi nilai dengan jumlah milidetik antara saat permintaan DNS asal selesai dan koneksi TCP (dan TLS, jika berlaku) 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 ketika mengirim byte pertama respons ke penampil.

Server-Timing contoh header

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

contoh— kehilangan cache

Contoh berikut menunjukkan Server-Timing header yang mungkin diterima oleh penampil ketika 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 titik kehadiran (POP) (cdn-upstream-layer;desc="EDGE").

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

  • Butuh 114 milidetik CloudFront untuk menyelesaikan koneksi TCP (dan TLS, jika berlaku) 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 ada di CloudFront 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 penampil, setelah menerima permintaan pemirsa (). cdn-downstream-fbl;dur=436

contoh— Hit cache

Contoh berikut menunjukkan Server-Timing header yang mungkin diterima oleh penampil ketika objek yang diminta berada di 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 penampil, setelah menerima permintaan pemirsa (). cdn-downstream-fbl;dur=137