公開:

HTTPステータスコードの「307 Temporary Redirect」とは?意味をわかりやすく簡単に解説

text: XEXEQ編集部


HTTPステータスコードの「307 Temporary Redirect」とは

「307 Temporary Redirect」はリクエストされたリソースが一時的に別のURLに移動されていることを示すステータスコードです。このステータスコードはリクエストされたリソースが一時的に別の場所に移動されており、将来的には元の場所に戻る可能性があることを意味します。

「307 Temporary Redirect」はHTTPの3xxリダイレクトステータスコードの一つであり、「302 Found」と同様の働きをします。ただし、「302 Found」とは異なり、「307 Temporary Redirect」ではリクエストメソッドとリクエストボディが変更されずに転送先のURLにリダイレクトされます。

クライアントは「307 Temporary Redirect」のレスポンスを受け取ると、自動的に指定された新しいURLにリクエストを送信します。その際、元のリクエストメソッドとリクエストボディが維持されるため、POSTリクエストなどでも正しくリダイレクトが行われるのです。

「307 Temporary Redirect」は主にサーバーメンテナンスやサービスの一時的な移行などの際に使用されることが多いステータスコードです。リソースの移動が永続的ではなく、一時的である場合に適しているとされています。

以上のように、「307 Temporary Redirect」は一時的なリダイレクトを示すHTTPステータスコードであり、リクエストメソッドとリクエストボディを維持したままリダイレクトを行うという特徴があります。適切に使用することで、一時的なリソースの移動をスムーズに処理できるでしょう。

「307 Temporary Redirect」の特徴と挙動

「307 Temporary Redirect」の特徴と挙動に関して、以下3つを簡単に解説していきます。

  • 「307 Temporary Redirect」はリクエストメソッドとリクエストボディを維持する
  • 「307 Temporary Redirect」はキャッシュの扱いが「302 Found」とは異なる
  • 「307 Temporary Redirect」はリソースの一時的な移動に適している

「307 Temporary Redirect」はリクエストメソッドとリクエストボディを維持する

「307 Temporary Redirect」の大きな特徴はリクエストメソッドとリクエストボディを変更せずにリダイレクトを行うことです。つまり、元のリクエストがPOSTメソッドだった場合、リダイレクト先でもPOSTメソッドが維持されます。

これは「302 Found」などの他のリダイレクトステータスコードとは異なる挙動です。「302 Found」ではリダイレクト先でリクエストメソッドがGETに変更されてしまうことがあるのです。

そのため、「307 Temporary Redirect」はリクエストメソッドとリクエストボディを維持したままリダイレクトを行いたい場合に適したステータスコードと言えるでしょう。POSTリクエストなどでデータを送信する際に、リダイレクトが必要な場合に有用です。

「307 Temporary Redirect」はキャッシュの扱いが「302 Found」とは異なる

「307 Temporary Redirect」と「302 Found」はどちらも一時的なリダイレクトを示すステータスコードですが、キャッシュの扱いに違いがあります。「302 Found」ではリダイレクト先のレスポンスがキャッシュされる可能性があります。

一方、「307 Temporary Redirect」ではリダイレクト先のレスポンスがキャッシュされないことが規定されています。つまり、毎回新しいリクエストが送信され、最新のレスポンスが取得されるのです。

このキャッシュの扱いの違いは一時的なリダイレクトの用途によって使い分ける必要があります。キャッシュを避けたい場合は「307 Temporary Redirect」を使用するのが適切でしょう。

「307 Temporary Redirect」はリソースの一時的な移動に適している

「307 Temporary Redirect」はリソースの一時的な移動を示すのに適したステータスコードです。サーバーメンテナンスやサービスの一時的な移行などの際に、リソースが一時的に別のURLに移動されている場合に使用されます。

リソースの移動が永続的ではなく、将来的には元の場所に戻る可能性がある場合は「307 Temporary Redirect」を使用するのが適切です。一方、リソースの移動が恒久的な場合は「301 Moved Permanently」を使用するのが一般的です。

「307 Temporary Redirect」を適切に使用することで、一時的なリソースの移動をスムーズに処理できます。クライアント側では自動的に新しいURLにリクエストが送信されるため、ユーザーエクスペリエンスにも配慮できるでしょう。

「307 Temporary Redirect」の使用例とシナリオ

「307 Temporary Redirect」の使用例とシナリオ」に関して、以下3つを簡単に解説していきます。

  • サーバーメンテナンス中の一時的なリダイレクト
  • サービスの移行期間中の一時的なリダイレクト
  • A/Bテストなどでの一時的なリダイレクト

サーバーメンテナンス中の一時的なリダイレクト

定期的なサーバーメンテナンスの際、サービスを一時的に別のサーバーに移行することがあります。その場合、元のURLへのアクセスに対して「307 Temporary Redirect」を返し、一時的な代替サーバーにリダイレクトするのが一般的です。

メンテナンス期間が終了したら、リダイレクトを解除し、元のサーバーでサービスを再開します。この場合、「307 Temporary Redirect」を使用することで、メンテナンス中も適切にリクエストを処理できるのです。

また、メンテナンス中のリダイレクト先ではメンテナンスの旨を伝えるメッセージを表示するなど、ユーザーにも配慮することが大切です。「307 Temporary Redirect」を使用することで、ユーザーにはメンテナンスによる一時的な変更であることを伝えられます。

サービスの移行期間中の一時的なリダイレクト

サービスのリニューアルや移行の際、新旧のシステムを並行運用する期間があります。その場合、旧URLへのアクセスに対して「307 Temporary Redirect」を返し、新しいURLにリダイレクトするという使い方ができます。

移行期間が終了し、完全に新システムに切り替わった後はリダイレクトを「301 Moved Permanently」に変更するなど、恒久的な移動を示すことが大切です。移行期間中は「307 Temporary Redirect」を用いて、スムーズにリクエストを新システムに導けるでしょう。

ただし、移行期間が長期にわたる場合は「307 Temporary Redirect」の使用は避け、「301 Moved Permanently」を使用するのが望ましいとされています。一時的な移動としての「307 Temporary Redirect」の使用はあくまでも短期的な場合に限定すべきです。

A/Bテストなどでの一時的なリダイレクト

ウェブサービスの改善のために、A/Bテストを実施することがあります。A/Bテストではユーザーを複数のグループに分け、それぞれに異なるバージョンのサービスを提供して反応を比較します。

このような場合、「307 Temporary Redirect」を使って、ユーザーを各バージョンのURLにリダイレクトすることができます。リダイレクトの割合を調整することで、各グループのユーザー数を制御できるでしょう。

A/Bテストの期間が終了したら、リダイレクトを解除し、優れた結果を示したバージョンのみを公開します。「307 Temporary Redirect」を活用することで、A/Bテストを円滑に進められるのです。

「307 Temporary Redirect」を使用する際の注意点

「307 Temporary Redirect」を使用する際の注意点」に関して、以下3つを簡単に解説していきます。

  • 一時的なリダイレクトにのみ使用する
  • リダイレクトループに注意する
  • リダイレクト先のURLを適切に指定する

一時的なリダイレクトにのみ使用する

「307 Temporary Redirect」はあくまでも一時的なリダイレクトを示すステータスコードです。リソースの移動が恒久的な場合は「301 Moved Permanently」を使用するのが適切とされています。

一時的な移動であっても、長期間にわたる場合は「307 Temporary Redirect」の使用は避けるべきでしょう。「307 Temporary Redirect」を長期的に使用し続けると、クライアント側の負荷が増大し、パフォーマンスに影響を与える可能性があります。

リソースの移動が一時的か恒久的かを見極め、適切なステータスコードを選択することが大切です。「307 Temporary Redirect」は短期的な一時的移動にのみ使用するようにしましょう。

リダイレクトループに注意する

「307 Temporary Redirect」を使用する際はリダイレクトループに注意が必要です。リダイレクトループとはリダイレクトの設定が適切でないために、クライアントが永遠にリダイレクトを繰り返してしまう状態のことを指します。

例えば、URLAからURLBにリダイレクトし、URLBからさらにURLAにリダイレクトするような設定になっている場合、クライアントは無限ループに陥ってしまいます。このような状態ではクライアントがリソースを取得できなくなるでしょう。

リダイレクトループを避けるためにはリダイレクトの設定を入念に確認することが大切です。「307 Temporary Redirect」を使用する際はリダイレクト先のURLが適切であるか、ループが発生していないかを十分にチェックしましょう。

リダイレクト先のURLを適切に指定する

「307 Temporary Redirect」を使用してリダイレクトを行う際はリダイレクト先のURLを適切に指定することが重要です。リダイレクト先のURLが誤っていたり、存在しなかったりすると、クライアントはリソースを取得できなくなります。

リダイレクト先のURLは絶対URLで指定するのが一般的です。相対URLを使用すると、クライアント側で正しいURLに解決できない可能性があるためです。

また、リダイレクト先のURLのスキーム(httpやhttps)も適切に指定する必要があります。HTTPSからHTTPへのリダイレクトは避けるべきとされており、セキュリティ上の問題につながる可能性があるのです。「307 Temporary Redirect」を使用する際はリダイレクト先のURLを適切に指定することを忘れずに行いましょう。

※上記コンテンツはAIで確認しておりますが、間違い等ある場合はコメントよりご連絡いただけますと幸いです。

「インターネット」に関するコラム一覧「インターネット」に関するニュース一覧
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。