307 リダイレクト (Temporary Redirect) とは、一時的な URL 転送を示す HTTP ステータスコードで、302 リダイレクトとの最大の違いは、リクエストメソッドとボディを変更せずに転送する点です。POST リクエストが 307 で転送された場合、転送先にも POST リクエストが送信されます。
この特性は、フォーム送信やAPI リクエストの転送で重要になります。302 リダイレクトでは、一部のブラウザが POST リクエストを GET に変更してしまう歴史的な挙動があり、フォームデータが失われる可能性がありました。307 はこの問題を解決するために HTTP/1.1 で導入されました。<% if (typeof amazonTag !== 'undefined' && amazonTag) { %><a href="https://www.amazon.co.jp/s?k=HTTP%20メソッド%20仕様&tag=<%= amazonTag %>" target="_blank" rel="nofollow noopener noreferrer" class="amazon-inline-link">Amazon の関連書籍</a><% } else { %>Amazon の関連書籍<% } %>も参考になります。
短縮 URL サービスでは、GET リクエストによるページ遷移が主な用途であるため、307 リダイレクトが使用されるケースは限定的です。ただし、API エンドポイントの一時的な移行や、メンテナンス中の代替サーバーへの転送では 307 が適切な選択肢になります。
HSTS (HTTP Strict Transport Security) の内部リダイレクトでも 307 が使用されます。ブラウザが HTTP でアクセスした際、HSTS ポリシーに基づいて HTTPS へ内部的に 307 リダイレクトを行います。<% if (typeof amazonTag !== 'undefined' && amazonTag) { %><a href="https://www.amazon.co.jp/s?k=Web%20セキュリティ%20HTTPS&tag=<%= amazonTag %>" target="_blank" rel="nofollow noopener noreferrer" class="amazon-inline-link">Web セキュリティの実践書</a><% } else { %>Web セキュリティの実践書<% } %>も役立ちます。