區域 ID
REGION_ID
是 Google 根據您在建立應用程式時選取的地區所指派的縮寫代碼。此代碼不對應至國家/地區或省份,即使部分區域 ID 可能與常用的國家/地區和省份代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r
。如果是這段時間前建立的現有應用程式,網址可選擇是否包含地區 ID。
進一步瞭解區域 ID。
本參考頁面詳細說明系統支援的 HTTP 標頭,以及 App Engine 中的要求與回應限制。如要瞭解 App Engine 如何接收要求及傳送回應,請參閱要求的處理方式一文。
要求標頭
傳入 HTTP 要求包含用戶端傳送的 HTTP 標頭。基於安全性考量,部分標頭在送達應用程式之前會由中繼 Proxy 進行處理、修改或移除。
從傳入要求中移除的標頭
如果用戶端傳送下列標頭,系統會從傳入的要求中移除這些標頭:
名稱符合
X-Google-*
模式的標頭。這個名稱模式已保留給 Google 使用。名稱與 App Engine 專屬標頭相符的標頭。系統只會移除完全相符 (不區分大小寫) 的項目。舉例來說,系統會移除名為
X-Appengine-Country
或X-AppEngine-Country
的標頭,但不會移除X-Appengine-Cntry
。
Accept-Encoding
Connection
Keep-Alive
Proxy-Authorization
TE
Trailer
Transfer-Encoding
舉例來說,伺服器可能會根據 Accept-Encoding
要求標頭的值,自動傳送經過 gzip 壓縮的回應。應用程式本身不需要知道用戶端可接受的內容編碼。
App Engine 專屬標頭
App Engine 會為應用程式在所有要求中新增下列標頭:
X-Appengine-Country
- 發出要求的來源國家/地區,採用 ISO 3166-1 alpha-2 國家/地區代碼。
App Engine 會根據用戶端的 IP 位址決定這個代碼。請注意,國家/地區資訊並非來自 WHOIS 資料庫;WHOIS 資料庫中含有國家/地區資訊的 IP 位址,可能不會在
X-Appengine-Country
標頭中顯示國家/地區資訊。您的應用程式應處理特殊國家/地區代碼ZZ
(未知國家/地區)。 X-Appengine-Region
- 要求來源地區的名稱。這個值必須搭配
X -Appengine-Country
中的國家/地區一起理解。舉例來說,如果國家/地區是「US」而地區是「ca」,則「ca」表示「加州」而非加拿大。如需有效地區值的完整清單,請參閱 ISO-3166-2 標準。 X-Appengine-City
- 要求來源城市的名稱。舉例來說,如果是來自 Mountain View (山景市) 的要求,標頭值可能為「mountain view」。
mountain view
這個標頭沒有有效值的標準清單。如果無法解析城市,標頭值會設為?
。 X-Appengine-CityLatLong
- 發出要求的城市經緯度。如果是來自 Mountain View (山景城) 的要求,這個字串可能會是「37.386051,-122.083851」。如果無法解析城市,標頭值會設為
0.000000,0.000000
。 X-Cloud-Trace-Context
- 適用於 Cloud Trace 和 Cloud Logging 要求的專屬 ID。由於系統會自動追蹤所有 App Engine 標準環境應用程式,因此您無法停用這個標頭或選擇追蹤的取樣率。
X-Forwarded-For: [CLIENT_IP(s)], [global forwarding rule IP]
轉送用戶端要求的 IP 位址清單 (以逗號分隔)。清單中的第一個 IP 通常是建立要求的用戶端的 IP。後續 IP 則會針對在要求送達應用程式伺服器之前,曾處理過該要求的 Proxy 伺服器提供相關資訊。例如:
X-Forwarded-For: clientIp, proxy1Ip, proxy2Ip
X-Forwarded-Proto [http | https]
依據用戶端用來連線到您應用程式的通訊協定顯示
http
或https
。Google Cloud 負載平衡器會終止所有
https
連線,然後透過http
將流量轉送到 App Engine 執行個體。舉例來說,如果使用者要求透過https://PROJECT_ID.REGION_ID.r.appspot.com
存取您的網站,則 X-Forwarded-Proto 標頭的值為https
。
此外,App Engine 可能會設定下列標頭,供 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
App Engine 服務可能會新增其他要求標頭:
Cron 服務的要求會新增下列標頭:
X-Appengine-Cron: true
詳情請參閱確保 Cron 網址的安全。
要求回應
本 HTTP 標頭說明文件僅適用於連入 HTTP 要求的回應。這個回應在傳回用戶端前可能已經過修改。
移除的標頭
系統會忽略並從回應中移除下列標頭:
Connection
Content-Encoding
*Content-Length
Date
Keep-Alive
Proxy-Authenticate
Server
Trailer
Transfer-Encoding
Upgrade
* 如果回應經 App Engine 壓縮,則此標頭可能會重新加到回應中。
系統也會移除名稱或值含有非 ASCII 字元的標頭。
新增或取代的標頭
系統會在回應中新增或取代下列標頭:
Cache-Control
、Expires
和Vary
這些標頭會向中繼網路 Proxy (例如 Google Frontend 和網際網路服務供應商) 和瀏覽器指定快取政策。如果應用程式設定了這些回應標頭,通常不會修改這些標頭,除非應用程式也設定了
Set-Cookie
標頭,或是為使用管理員帳戶登入的使用者產生回應。如果應用程式設定
Set-Cookie
回應標頭,系統會將Cache-Control
標頭設為private
(如果尚未設為更嚴格的限制),並將Expires
標頭設為目前日期 (如果尚未設為過去的日期)。一般來說,這會允許瀏覽器快取回應,但不會允許中繼 Proxy 伺服器快取回應。這是基於安全考量,因為如果公開快取回應,其他使用者隨後可能會要求相同資源,並擷取第一位使用者的 Cookie。如果應用程式未設定
Cache-Control
回應標頭,伺服器可能會將其設為private
,並新增Vary: Accept-Encoding
標頭。如要進一步瞭解快取,包括 Google 前端支援的
Vary
值清單,請參閱「回應快取」。Content-Encoding
如上所述,伺服器可能會根據要求標頭和回應
Content-Type
,自動壓縮回應主體。在本例中,它會新增Content-Encoding: gzip
標頭,指出主體已壓縮。詳情請參閱「回應壓縮」一節。Content-Length
或Transfer-Encoding
伺服器一律會忽略應用程式傳回的
Content-Length
標頭。並將Content-Length
設為內文長度 (如已壓縮,則為壓縮後的長度) 或刪除Content-Length
,然後使用區塊傳輸編碼 (新增Transfer-Encoding: chunked
標頭)。如果第二代執行階段的Content-Length
設定不正確,App Engine 會傳回 500 回應。Date
設為目前的日期和時間。
Server
- 設為
Google Frontend
。開發伺服器會將這個標頭設為Development/x
,其中「x」x是版本號碼。
如果您在登入管理員帳戶的情況下存取網站上的動態頁面,App Engine 會在回應標頭中加入與要求相關的統計資料:
X-Appengine-Resource-Usage
- 要求使用的資源,包括伺服器端時間 (以毫秒為單位)。
系統無法快取包含資源使用統計資料的回應。
在應用程式設定檔中設定的回應標頭
您可以在應用程式的設定檔中,依動態和靜態路徑網址設定自訂 HTTP 回應標頭。詳情請參閱設定說明文件的 http_headers
部分。