このページでは、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 は、以下の範囲内にある任意のポートを使用します。
80
~90
440
~450
1024
~65535
URL にポート番号が含まれていない場合、使用するポートはプロトコルで判断します。HTTP リクエストはポート 80
を使用し、HTTPS リクエストはポート 443
を使用します。
リクエストのメソッド
URL 取得サービスを使用してリクエストを発行する場合、次のいずれかの HTTP メソッドを使用できます。
GET
POST
PUT
HEAD
DELETE
PATCH
リクエストには、HTTP ヘッダーを追加できます。POST
、PUT
、PATCH
リクエストにはペイロードを追加できます。
リクエストのプロキシ
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 コンソールの [割り当ての詳細] ページに移動します。
また、URL 取得サービスの使用には、以下の制限も適用されます。
制限 | 値 |
---|---|
リクエスト サイズ | 10 MB |
リクエスト ヘッダーのサイズ | 16 KB(ヘッダーで指定可能な URL の最大長) |
レスポンス サイズ | 32 MB |
期限の最大値(リクエスト ハンドラ) | 60 秒 |
期限の最大値(タスクキューおよび cron ジョブハンドラ) | 60 秒 |
次のステップ
HTTP(S) リクエストの発行の説明に沿ってコードサンプルを実行し、アプリケーションからリクエストを発行する。