送信リクエスト

このページでは、App Engine アプリケーションが URL 取得サービスを使用して HTTP / HTTPS リクエストを送信し、レスポンスを受信する方法を説明します。App Engine アプリケーションから HTTP / HTTPS リクエストを送信するコードのサンプルについては、HTTP(S) リクエストの送信をご覧ください。

リクエスト

App Engine は、URL 取得サービスを使用して、送信リクエストを発行します。PHP 言語には、リモートから HTTP リクエストを行う関数がいくつか用意されています。これらは App Engine でさまざまな方法で実装され、割り当てや料金も異なります。さまざまなタイプの詳細については、HTTP(S) リクエストの発行をご覧ください。

リクエストのプロトコル

アプリケーションは、HTTP または HTTPS のいずれかで URL をフェッチできます。必要なプロトコルは、ターゲット URL のプロトコルから判断されます。

フェッチされた URL は、以下の範囲内にある任意のポートを使用します。

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

URL にポート番号が含まれていない場合、使用するポートはプロトコルで判断します。HTTP リクエストはポート 80 を使用し、HTTPS リクエストはポート 443 を使用します。

リクエストのメソッド

URL フェッチ サービスを使用してリクエストを発行する場合、次のいずれかの HTTP メソッドを使用できます。

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

リクエストには、HTTP ヘッダーを追加できます。POSTPUTPATCH リクエストにはペイロードを追加できます。

リクエストのプロキシ

URL フェッチ サービスは、HTTP/1.1 互換のプロキシを使用して結果をフェッチすることに注意してください。

アプリケーションがリクエストを無限に繰り返さないようにするため、リクエスト ヘッダーを独自の URL のフェッチに使用することはできません。他の方法でも無限に再帰する可能性はあります。ユーザーが指定した URL に対するリクエストをアプリケーションでフェッチする場合には注意してください。

リクエスト ヘッダー

アプリケーションで送信リクエストに 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 のリクエストを識別できるように App Engine が ID 文字列を追加します。追加される文字列の形式は "AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)" で、APPID はアプリの識別子です。
  • X-Appengine-Inbound-Appid。このヘッダーは変更できません。リクエストが URL フェッチ サービス経由で送信されたときに、リダイレクト パラメータが False に設定されると、自動的に追加されます。

リクエストのタイムアウト

リクエストの期限(タイムアウト)を設定できます。デフォルトのタイムアウトは 5 秒に設定されています。期限の最大値は、HTTP(S) リクエストの場合は 60 秒であり、Task Queue および cron ジョブ リクエストの場合も 60 秒です。

安全な接続と HTTPS

アプリケーションで、HTTPS を使用して安全なサーバーに接続し、URL をフェッチすることもできます。リクエストとレスポンスのデータは暗号化され、ネットワーク上で送受信されます。

PHP API ではデフォルトで、URL 取得プロキシがホストとの接続を検証します。HTTPS を使用する場合、この API により、App Engine とリモートホストの間の中間者攻撃が検出されます。

レスポンス

URL フェッチ API を使用する場合、URL フェッチ サービスは、レスポンス コード、ヘッダー、本文を含むすべてのレスポンス データを返すことに注意します。

デフォルトでは、URL フェッチ サービスがリダイレクト コードを含むレスポンスを受信すると、サービスがリダイレクトします。サービスは、最大 5 つまでのリダイレクト レスポンスに対応し、最後のリソースを返します。リダイレクトを実行しないように URL 取得サービスに指示することもできます。その場合、アプリケーションにリダイレクト レスポンスを返します。

受信レスポンスのサイズが制限を超えていると、URL 取得サービスがレスポンスを自動的に切り詰めます。詳細については、割り当て量と制限をご覧ください。

開発用サーバーでの URL 取得の使用

パソコン上の App Engine 開発用サーバーでアプリケーションを実行している場合、URL フェッチ サービスに対する呼び出しはローカルで処理されます。開発用サーバーは、パソコンからリモートホストに直接接続して URL をフェッチします。この場合、パソコンのネットワーク接続を使用してインターネットにアクセスします。

URL をフェッチするアプリケーションの機能をテストする場合、パソコンからリモートホストにアクセスします。

URL フェッチの割り当てと制限

URL フェッチ サービスの割り当てについては、割り当てをご覧ください。アプリケーションの現在の割り当て使用量は、Google Cloud Platform Console の [割り当ての詳細] タブで確認できます。

また、URL フェッチ サービスの使用には、以下の制限も適用されます。

制限
リクエスト サイズ 10 MB
リクエスト ヘッダーのサイズ 16 KB(ヘッダーで指定可能な URL の最大長)
レスポンス サイズ 32 MB
期限の最大値(リクエスト ハンドラ) 60 秒
期限の最大値(Task Queue および cron ジョブハンドラ) 60 秒

次のステップ

HTTP(S) リクエストの発行の説明に沿ってコードサンプルを実行し、アプリケーションからリクエストを発行します。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

PHP の App Engine スタンダード環境