Share via


Web.Contents を使用した状態コードの処理

Web.Contents 関数には、特定の HTTP 状態コードを処理するための搭載機能がいくつか用意されています。 既定の動作は、オプション レコードManualStatusHandling フィールドを使用して、拡張機能でオーバーライドできます。

自動再試行

Web.Contents によって、次のいずれかの状態コードで失敗した要求が自動的に再試行されます。

コード Status
408 Request Timeout
429 要求が多すぎます
503 サービス利用不可
504 ゲートウェイのタイムアウト
509 帯域幅制限超過

要求は、失敗する前に最大 3 回再試行されます。 応答に Retry-after ヘッダーが含まれない限り、エンジンによってエクスポネンシャル バックオフ アルゴリズムが使用され、次の再試行までの待機時間が決定されます。 ヘッダーが見つかると、エンジンは次の再試行までの指定された秒数だけ待機します。 サポートされる最小待機時間は 0.5 秒で、最大値は 120 秒です。

Note

Retry-after 値は delta-seconds 形式である必要があります。 HTTP-date 形式は現在、サポートされていません。

認証の例外

次の状態コードは資格情報の例外となり、ユーザーに資格情報の提供 (OAuth トークンの有効期限が切れている場合は再度サインイン) を求める認証プロンプトが表示されます。

コード Status
401 権限がありません
403 許可されていません

Note

拡張機能は状態コード 401 および 403 の ManualStatusHandling オプションを使用できますが、これはカスタム データ コネクタの外部で (つまり、Power Query から直接) 行われる Web.Contents 呼び出しでは実行できません。

リダイレクト

次の状態コードでは、Location ヘッダーで指定された URI に自動的にリダイレクトされます。 Location ヘッダーが欠落していると、エラーが発生します。

コード Status
300 複数選択
301 Moved Permanently
302 Found
303 他を参照
307 Temporary Redirect

Note

状態コード 307 のみが POST 要求メソッドを保持します。 その他のすべてのリダイレクト状態コードは、GET に切り替わります。