2

私は Laravel 3 を使用していますが、以外の方法でヘッダーを設定する方法は明らかではありませんResponse::make()

次のようなリダイレクトを行っています。

return Redirect::to('admin/check');

no-cache次のように、リダイレクト用に追加のヘッダーを設定したいと思います。

"Cache-Control: no-store, no-cache, must-revalidate"

PHPで直接これを行うことができることはわかっていますが、Laravelを介して応答ヘッダーを設定する方法はありますか?

4

2 に答える 2

5

Redirect::to()Laravelを呼び出すと、302ステータスとLocationヘッダーを持つResponseオブジェクトがインスタンス化されます。その後、そのResponseオブジェクトはコントローラーによって返され、適切なHTTP応答としてレンダリングされるため、コントローラーの時点で、そのヘッダーを変更することができます。

さらに正確に言うとclass Redirect extends Responseここを見てください あなたは単に使用することによってそれを達成することができます:

return Redirect::to('admin/check')
    ->header('Cache-Control', 'no-store, no-cache, must-revalidate');
于 2013-03-12T22:28:25.793 に答える
2

残念ながら、受け入れられた答えは間違っていて誤解を招くものです!

使用する言語やフレームワークに関係なく、カスタム ヘッダーが設定されたページにリダイレクトすることはできません。つまり、HTTP リダイレクトをトリガーして、クライアント (ブラウザー) にカスタム ヘッダーを追加させる方法はありません。

このコードは問題なく動作するはずだと考えているかもしれません。

return Redirect::to('admin/check')
    ->header('Cache-Control', 'no-store, no-cache, must-revalidate');

しかし、そうはなりません。リダイレクト自体ではなく、ブラウザーにリダイレクトするように指示している応答のカスタム ヘッダーを設定しています。

カスタム ヘッダーを使用して HTTP 要求を発行するようにサイトがブラウザに指示する唯一の方法は、Javascript とXMLHttpRequestオブジェクトを使用することです。また、このような ajax リクエストを許可するには、ターゲット サーバーに CORS を実装する必要があります。

を使用して非同期リクエストを作成しない限り、ページは HTTP リクエスト ヘッダーを設定できないことに注意してくださいXMLHttpRequest。クライアント側でもカスタムヘッダーを使用してそのようなリダイレクトを行うことはできません。

それはウェブの仕組みではありません。

于 2016-12-19T08:21:44.457 に答える