res.redirect()
リクエスト元のユーザーエージェントを指定された絶対URLまたは相対URLにリダイレクトします。
return res.redirect(url);
または
return res.redirect(statusCode, url);
引数 | 型 | 詳細 | |
---|---|---|---|
1 | statusCode | オプションのステータスコード(例:301)。(省略した場合、ステータスコードは302とみなされます。) | |
2 | url | URL式(完全な仕様は下記を参照)。 例: "http://google.com" または "/login" |
Sails/Express は、いくつかの種類のリダイレクトをサポートしています。
return res.redirect('http://google.com');
/checkout
への次のリダイレクトは、http://example.com/checkoutに移動します。return res.redirect('/checkout');
return res.redirect('..');
/
にリダイレクトします)return res.redirect('back');
- このメソッドはターミナルです。つまり、通常、アプリが特定のリクエストに対して実行するコードの最後の行になります(したがって、これらのドキュメント全体で
return
の使用が推奨されています)。- Sails v1.x 以降では、HTTPリクエストの場合、
res.redirect()
はres.status()
によって確立されたステータスコードを尊重しません。 @Guillaume-Duvalと@oshatrkに感謝します!- アプリが
res.redirect()
を呼び出すと、Sailsは一時的なリダイレクトを示すステータスコード302でレスポンスを送信します。これにより、ユーザーエージェントは指示されたURLに新しいリクエストを送信するように指示されます。ユーザーエージェントにリダイレクトに従うことを強制する方法はありませんが、ほとんどのクライアントは適切に動作します。- 一般に、リクエストが「JSONを要求している」(つまり、
req.wantsJSON
)場合は、res.redirect()
を使用する必要はありません。- リクエストがSailsソケットクライアントから発信された場合、常に「JSONを要求している」ため、Sailsソケットクライアントはリダイレクトに従いません。このため、アクションがWebSocketリクエスト(たとえば、
io.socket.get()
)を使用して呼び出された場合、適切なステータスコードと、目的のリソースの場所を示す「Location」ヘッダーを受信するだけです。WebSocketリクエストのリダイレクトをどのように処理するかは、クライアント側のコードで決定する必要があります。