2

次のコードがあります。

Route::get('/',   function()
{
    return 'non secure page';
});
Route::get('/',  array('https' => true, function()
{
    return 'secure page';
}));

私が予想していたのは、これら 2 つのルートの扱いが異なるということです。1 つ目はhttp://example.comリクエスト用で、2 つ目はhttps://example.com用です。それぞれ、これらのページには「非セキュア ページ」および「セキュア ページ」というテキストが表示されます。実際に起こることは、どちらも「セキュア ページ」というテキストを表示することです。これは、両方のルートが同じように扱われることを意味する必要があります。つまり、リクエストが https 経由か http 経由かは関係なく、同じルートがトリガーされます。

を使用して問題を解決できることはわかってif (Request::secure()){ //routes };いますが、laravel の HTTPS セキュア ルートはどのような用途に使用されているのでしょうか? それらは何を達成し、いつ使用する必要がありますか?

私はドキュメントを見てきましたが、何が起こるべきかは私には明らかではありません。

4

2 に答える 2

8

ドキュメントには次のように記載されています。

ルートを定義するときは、"https" 属性を使用して、URL を生成するか、そのルートにリダイレクトするときに HTTPS プロトコルを使用する必要があることを示すことができます。

"https" であり::secure()、ルートへの URL を生成する場合にのみ使用され、https のみのルートを提供するためには使用されません。非 HTTPS ルートから保護するフィルターを作成できます (以下の例)。または、ドメイン全体への HTTPS 以外のアクセスを防止したい場合は、PHP でこれを行うのではなく、サーバーを再構成する必要があります。

Route::filter('https', function() {
    if (!Request::secure()) return Response::error(404);
});

代替フィルター応答:

Route::filter('https', function() {
    if (!Request::secure()) return Redirect::to_secure(URI::current());
});

参考文献:

  1. http://laravel.com/docs/routing#https-routes
  2. http://laravel.com/docs/routing#filters
于 2013-03-18T12:20:52.573 に答える