Laravel 3 HTTP 和 HTTPS 路由

标签 laravel laravel-3

我有以下代码:

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

我预计这两条路线会受到不同的对待。第一个是 http://example.com请求,第二个为 https://example.com 。这些页面应分别显示文本“非安全页面”和“安全页面”。实际发生的情况是两者都显示文本“安全页面”。这必须意味着两条路由被视为相同,即请求是通过 https 还是 http 并不重要 - 会触发相同的路由。

我知道我可以通过使用 if (Request::secure()){//routes }; 解决我的问题,但这又让我想到一个问题:HTTPS 安全路由有什么用拉拉维尔?它们能实现什么效果以及何时使用它们?

我查看了文档,但我不清楚应该发生什么。

最佳答案

文档说:

When defining routes, you may use the "https" attribute to indicate that the HTTPS protocol should be used when generating a URL or Redirect to that route.

"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

关于Laravel 3 HTTP 和 HTTPS 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15435212/

相关文章:

javascript - 在 Vue.Js 中的 v-text 中附加多个字段

facebook-php-sdk - 我的 Laravel 应用无法在 Facebook 上运行

php - 如何在 Laravel 中列出嵌套表格中的所有项目

php - 如何在 laravel 中的一个函数中为同一路由返回多个 View

php - Laravel 获取文件名

css - 为什么容器内的 div 与页脚重叠?

laravel - Vue 多选 laravel 提交表单

php - 导出sql数据库时utf8列中的乱码数据

php - 如何在 Laravel 中使用 SQL Server 连接?

php - 如何仅在 laravel 中调用一个 javascript Assets ?