傳出要求

本頁面說明 App Engine 應用程式如何使用網址擷取服務來發出 HTTP 和 HTTPS 要求並接收回應。如果要查看程式碼範例,請參閱發佈 HTTP(S) 要求,範例中會示範如何從 App Engine 應用程式發出 HTTP 和 HTTPS 要求。

要求

App Engine 使用網址擷取服務來發佈傳出要求。在 Python 中,您可以使用 httpliburlliburllib2 程式庫發出 HTTP 要求;而在 App Engine 應用程式中,每個程式庫都會使用網址擷取服務來執行這些要求。您也可以直接使用 urlfetch 程式庫。

要求通訊協定

應用程式可使用 HTTP 或 HTTPS 來擷取網址。您可以查看目標網址中的通訊協定,藉此推測應當使用的通訊協定。

待擷取的網址可使用下列範圍中的任何通訊埠號:

  • 80-90
  • 440-450
  • 1024-65535

如果網址中未提及通訊埠,則由通訊協定默許通訊埠。HTTP 要求發生於通訊埠 80,HTTPS 要求則發生於通訊埠 443

要求方法

如果您是透過網址擷取服務發佈要求,則可使用以下任一種 HTTP 方法:

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH

要求可包括 HTTP 標頭;如果是 POSTPUTPATCH 要求,則可包括酬載。

要求 Proxy

請注意,網址擷取服務會使用符合 HTTP/1.1 的 Proxy 來擷取結果。

為了防止應用程式導致要求無限遞迴,要求處理常式不可擷取本身的網址。但是其他方式仍可能造成無限遞迴,因此如果您的應用程式可用來擷取使用者所提供網址的要求,請務必謹慎作業。

要求標頭

應用程式可設定傳出要求的 HTTP 標頭。

傳送 HTTP POST 要求時,如果並未明確設定 Content-Type 標頭,則會將標頭設定為 x-www-form-urlencoded。這是網頁表單使用的內容類型。

基於安全理由,應用程式無法修改下列標頭:

  • Content-Length
  • Host
  • Vary
  • Via
  • X-Appengine-Inbound-Appid
  • X-Forwarded-For
  • X-ProxyUser-IP

App Engine 會視情況將這些標頭設為合適的值。舉例來說,App Engine 會計算來自要求資料的 Content-Length 標頭,並先將該標頭新增至要求中,接著再傳送要求。

下列標頭代表發出要求的應用程式的應用程式 ID:

  • User-Agent:此標頭可供修改,但是 App Engine 會附加 ID 字串,讓伺服器能識別 App Engine 的要求。附加的字串格式為 "AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)",其中 APPID 是應用程式的 ID。
  • X-Appengine-Inbound-Appid:此標頭不可修改;當下列重新導向參數設為 False 時,如果透過網址擷取服務傳送要求,則會自動新增此標頭。

要求逾時

您可以設定要求的期限或逾時時間。要求的預設逾時時間是 5 秒。

您可以傳送同步要求和非同步要求。下列行為會套用至網址擷取 API:

  • 「同步要求」:擷取呼叫會等到遠端主機傳回結果,再傳回控制命令給應用程式。如果時間超過擷取呼叫的等待時間上限,該呼叫會引發例外狀況。
  • 「非同步要求」:網址擷取服務會開始發出要求,然後馬上傳回包含物件的結果。應用程式可以在擷取網址的同時,執行其他工作。當應用程式需要結果時,會在物件上呼叫方法,如果有需要,方法會等候要求完成,再傳回結果。在要求處理常式結束時,如果有任何網址擷取要求呈擱置狀態,應用程式伺服器會等到剩餘的要求全數傳回或達到期限,才會將回應傳回給使用者。

安全連線和 HTTPS

您的應用程式可透過 HTTPS 連線到安全的伺服器,以安全的方式擷取網址。要求與回應資料會以加密的形式透過網路傳輸。

在 Python API 中,網址擷取 Proxy 依預設不會驗證聯絡的主機。您可以加入選用的 validate_certificate 引數到 fetch() 方法,藉以啟用主機驗證程序。

回應

如果您使用的是網址擷取 API,請注意網址擷取服務會傳回所有回應資料,回應、程式碼、標頭和內文均包含在內。

根據預設,如果網址擷取服務收到的回應內有重新導向程式碼,網址擷取服務就會追蹤這個重新導向連結。該服務最多會追蹤五個重新導向回應,再傳回最後的資源。您可以指示網址擷取服務不要追蹤重新導向連結,而是將重新導向的回應傳回應用程式。

在開發伺服器上使用網址擷取

在電腦的 App Engine 開發伺服器上執行應用程式時,系統會在本機上處理網址擷取服務的呼叫。開發伺服器會直接從您的電腦連線至遠端主機以擷取網址,使用的網路設定則是您的電腦存取網際網路時所用的網路設定。

在測試擷取網址應用程式的功能時,請確認您的電腦能夠存取遠端主機。

網址擷取的配額和限制

如要進一步瞭解網址擷取服務的配額,請參閱配額一文。您可造訪您的專案在 Google Cloud Platform 主控台上的配額詳細資料分頁,查看應用程式目前的配額用量。

此外,以下為網址擷取服務的使用限制:

上限 限額
要求大小 10 MB
要求標頭大小 16 KB (請注意,這會限制標頭中所能指定的最大網址長度)
回應大小 32 MB

後續步驟

請執行程式碼範例,並至發佈 HTTP(S) 要求取得如何從應用程式發出要求的說明指南。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
App Engine standard environment for Python 2