狀態碼的處理
這個 Web.Contents 函式內建了處理特定 HTTP 狀態碼的功能。 預設行為可以透過擴充功能中的選項記錄的ManualStatusHandling欄位來覆寫。
自動重試
Web.Contents 會自動重試因以下狀態碼失敗的請求:
| Code | 地位 |
|---|---|
| 408 | 請求逾時 |
| 429 | 過多要求 |
| 503 | 服務無法使用 |
| 504 | 閘道逾時 |
| 509 | 頻寬限制已超過。 |
申請最多可重試三次才會失敗。 引擎使用指數退縮演算法來決定下一次重試等待多久,除非回應包含 Retry-after 標頭。 當標頭被找到後,引擎會在下一次重試前等待指定的秒數。 最短支援等待時間為 0.5 秒,最大等待時間為 120 秒。
備註
Retry-after的值必須符合delta-seconds格式。 目前不支援此 HTTP-date 格式。
認證例外
以下狀態碼會產生憑證異常,並會觸發驗證提示,要求使用者提供憑證(或在 OAuth 憑證過期時重新登入)。
| Code | 地位 |
|---|---|
| 401 | 未經授權 |
| 403 | 禁止 |
備註
擴充功能可以對狀態碼 401 和 403 使用 ManualStatusHandling 選項,這在 Web.Contents 自訂資料連接器外(也就是直接從 Power Query)進行的呼叫中是無法做到的。
Redirection
以下狀態碼會自動重定向到標頭中 Location 指定的 URI。 缺少 Location 標頭會導致錯誤。
| Code | 地位 |
|---|---|
| 300 | 多選題 |
| 301 | 永久搬遷 |
| 302 | 已找到 |
| 303 | 參見其他 |
| 307 | 臨時重定向 |
備註
只有狀態碼 307 會保留 POST 請求方法。 所有其他重定向狀態碼都會切換到 GET。