ID region
REGION_ID
adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak berkaitan dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r
disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal ini, ID region bersifat opsional dalam URL.
Pelajari ID region lebih lanjut.
Gunakan halaman referensi ini untuk mengetahui detail tentang header HTTP yang didukung serta batasan permintaan dan respons di App Engine. Untuk memahami cara App Engine menerima permintaan dan mengirim respons, lihat Cara Penanganan Permintaan.
Header permintaan
Permintaan HTTP yang masuk menyertakan header HTTP yang dikirim oleh klien. Untuk tujuan keamanan, beberapa header dibersihkan, diubah, atau dihapus oleh proxy perantara sebelum sampai ke aplikasi.
Header dihapus dari permintaan masuk
Header berikut akan dihapus dari permintaan masuk jika klien mengirimkannya:
Header dengan nama yang cocok dengan pola
X-Google-*
. Pola nama ini dicadangkan untuk Google.Header dengan nama yang cocok dengan header khusus App Engine. Hanya pencocokan persis yang tidak peka huruf besar/kecil yang akan dihapus. Misalnya, header bernama
X-Appengine-Country
atauX-AppEngine-Country
akan dihapus, tetapiX-Appengine-Cntry
tidak.
Accept-Encoding
Connection
Keep-Alive
Proxy-Authorization
TE
Trailer
Transfer-Encoding
Misalnya, server dapat mengirim respons yang di-gzip secara otomatis, bergantung pada nilai header permintaan Accept-Encoding
. Aplikasi itu sendiri tidak perlu mengetahui encoding konten mana yang dapat diterima klien.
Header khusus App Engine
Sebagai layanan ke aplikasi, App Engine menambahkan header berikut ke semua permintaan:
X-Appengine-Country
- Negara tempat permintaan berasal, sebagai kode negara ISO 3166-1 alpha-2.
App Engine menentukan kode ini dari alamat IP klien. Perlu diperhatikan bahwa informasi negara tidak berasal dari database WHOIS; ada kemungkinan bahwa alamat IP yang memiliki informasi negara di database WHOIS tidak akan memiliki informasi negara di header
X-Appengine-Country
. Aplikasi Anda harus menangani kode negara khususZZ
(negara tidak diketahui). X-Appengine-Region
- Nama region tempat permintaan berasal. Nilai ini hanya berlaku dalam konteks negara di
X -Appengine-Country
. Misalnya, jika negaranya adalah "US" dan region-nya adalah "ca", maka "ca" berarti "California", bukan Kanada. Daftar lengkap nilai region yang valid dapat ditemukan di standar ISO-3166-2. X-Appengine-City
- Nama kota tempat permintaan berasal. Misalnya, permintaan dari kota Mountain View mungkin memiliki nilai header
mountain view
. Tidak ada daftar kanonis nilai yang valid untuk header ini. X-Appengine-CityLatLong
- Lintang dan bujur kota tempat permintaan berasal. String ini mungkin terlihat seperti "37.386051,-122.083851" untuk permintaan dari Mountain View.
X-Cloud-Trace-Context
- ID unik untuk permintaan yang digunakan untuk Cloud Trace dan Cloud Logging. Tidak ada opsi untuk menonaktifkan header ini atau memilih frekuensi sampling untuk pelacakan karena semua aplikasi lingkungan standar App Engine akan dilacak secara otomatis.
X-Forwarded-For: [CLIENT_IP(s)], [global forwarding rule IP]
Daftar alamat IP yang dipisahkan koma yang digunakan untuk merutekan permintaan klien. IP pertama dalam daftar ini umumnya adalah IP klien yang membuat permintaan. IP berikutnya memberikan informasi tentang server proxy yang juga menangani permintaan sebelum mencapai server aplikasi. Misalnya:
X-Forwarded-For: clientIp, proxy1Ip, proxy2Ip
X-Forwarded-Proto [http | https]
Menampilkan
http
atauhttps
berdasarkan protokol yang digunakan klien untuk terhubung ke aplikasi Anda.Load Balancer Google Cloud menghentikan semua koneksi
https
, lalu meneruskan traffic ke instance App Engine melaluihttp
. Misalnya, jika pengguna meminta akses ke situs Anda melaluihttps://PROJECT_ID.REGION_ID.r.appspot.com
, nilai header X-Forwarded-Proto adalahhttps
.
Selain itu, App Engine dapat menetapkan header berikut untuk penggunaan internal oleh App Engine:
X-Appengine-Https
X-Appengine-User-IP
X-Appengine-Api-Ticket
X-Appengine-Request-Log-Id
X-Appengine-Default-Version-Hostname
X-Appengine-Timeout-Ms
Permintaan dari Layanan Cron menambahkan header berikut:
X-Appengine-Cron: true
Lihat Mengamankan URL untuk cron guna mengetahui detail selengkapnya.
Permintaan yang berasal dari aplikasi App Engine lain akan menyertakan header yang mengidentifikasi aplikasi yang membuat permintaan, jika aplikasi yang meminta menggunakan Layanan URL Fetch:
X-Appengine-Inbound-Appid
Meminta respons
Dokumentasi header HTTP ini hanya berlaku untuk respons terhadap permintaan HTTP masuk. Respons dapat diubah sebelum ditampilkan ke klien.
Header yang dihapus
Header berikut akan diabaikan dan dihapus dari respons:
Connection
Content-Encoding
*Content-Length
Date
Keep-Alive
Proxy-Authenticate
Server
Trailer
Transfer-Encoding
Upgrade
* Dapat ditambahkan kembali jika respons dikompresi oleh App Engine.
Header dengan karakter non-ASCII yang terkandung dalam nama atau nilai juga akan dihapus.
Header yang ditambahkan atau diganti
Header berikut akan ditambahkan atau diganti dalam respons:
Cache-Control
,Expires
, danVary
Header ini menentukan kebijakan penyimpanan cache untuk proxy web perantara (seperti Google Frontend dan Internet Service Provider) dan browser. Jika aplikasi Anda menetapkan header respons ini, biasanya header tersebut tidak akan dimodifikasi kecuali jika aplikasi juga menetapkan header
Set-Cookie
, atau respons dibuat untuk pengguna yang login menggunakan akun administrator.Jika aplikasi Anda menetapkan header respons
Set-Cookie
, headerCache-Control
akan disetel keprivate
(jika belum lebih ketat) dan headerExpires
akan ditetapkan ke tanggal saat ini (jika belum dilakukan sebelumnya). Umumnya, hal ini akan memungkinkan browser untuk menyimpan respons dalam cache, tetapi tidak untuk server proxy perantara. Hal ini untuk alasan keamanan, karena jika respons di-cache secara publik, pengguna lain selanjutnya dapat meminta resource yang sama, dan mengambil cookie pengguna pertama.Jika aplikasi Anda tidak menetapkan header respons
Cache-Control
, server dapat menyetelnya keprivate
dan menambahkan headerVary: Accept-Encoding
.Untuk mengetahui informasi selengkapnya tentang penyimpanan ke dalam cache, termasuk daftar nilai
Vary
yang didukung Google Frontend, lihat Respons penyimpanan ke dalam cache.Content-Encoding
Bergantung pada header permintaan dan
Content-Type
respons, server dapat secara otomatis mengompresi isi respons, seperti yang dijelaskan di atas. Dalam hal ini, server akan menambahkan headerContent-Encoding: gzip
untuk menunjukkan bahwa isi respons telah dikompresi. Lihat bagian kompresi respons untuk mengetahui detail selengkapnya.Content-Length
atauTransfer-Encoding
Server selalu mengabaikan header
Content-Length
yang ditampilkan oleh aplikasi. Server akan menetapkanContent-Length
ke panjang isi respons (setelah kompresi, jika kompresi diterapkan), atau menghapusContent-Length
, dan menggunakan potongan encoding transfer (menambahkan headerTransfer-Encoding: chunked
).Content-Type
Jika Anda tidak menetapkan header ini secara eksplisit, class
http.ResponseWriter
akan mendeteksi jenis konten dari awal isi respons, dan menyetel headerContent-Type
sesuai kebutuhan.Date
Setel ke tanggal dan waktu saat ini.
Server
Tetapkan ke
Google Frontend
. Server pengembangan menetapkannya keDevelopment/x
, dengan x adalah nomor versinya.
Jika Anda mengakses halaman dinamis di situs saat login menggunakan akun administrator, App Engine akan menyertakan statistik per permintaan pada header respons:
X-Appengine-Resource-Usage
- Resource yang digunakan oleh permintaan, termasuk waktu sisi server dalam jumlah milidetik.
Respons dengan statistik penggunaan resource akan dibuat tidak dapat disimpan dalam cache.
Header respons yang disetel dalam konfigurasi aplikasi
Header Respons HTTP kustom dapat ditetapkan per URL untuk jalur dinamis dan statis di file konfigurasi aplikasi Anda. Lihat bagian http_headers
dalam dokumentasi konfigurasi untuk mengetahui detail selengkapnya.