以前のバンドル サービスの URL 取得

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

リクエスト

App Engine は、URL 取得サービスを使用して、送信リクエストを発行します。Go では、urlfetch パッケージに urlfetch.Transport が含まれます。これは http.RoundTripper インターフェースの実装です。このインターフェースは、App Engine のインフラストラクチャを使用してリクエストを行います。

リクエストのプロトコル

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

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

  • 8090
  • 440450
  • 102465535

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 取得サービス経由で送信された場合に、自動的に追加されます。

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

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

安全な接続と HTTPS

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

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

レスポンス

URL Fetch API を使用する場合、URL 取得サービスは、レスポンス コード、ヘッダー、本文を含むすべてのレスポンス データを返すことに注意してください。

デフォルトでは、URL 取得サービスがリダイレクト コードを含むレスポンスを受信すると、サービスがリダイレクトします。サービスは、最大 5 つまでのリダイレクト レスポンスに対応し、最後のリソースを返します。

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

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

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

URL 取得の割り当てと制限

URL 取得サービスの割り当てについては、割り当てをご覧ください。アプリケーションの現在の割り当て使用量を確認するには、Google Cloud Console の割り当ての詳細ページに移動します。

割り当ての詳細ページに移動

また、URL 取得サービスの使用には、以下の制限も適用されます。

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

次のステップ

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