區域 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
。這個標頭沒有有效值的標準清單。如果無法解析城市,標頭值會設為?
。 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 前端和網路服務供應器) 和瀏覽器。如果應用程式設定這些回應標頭,除非應用程式也設定
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
部分。