Laravel 4生成HTTPS URL

时间:2014-05-20 06:21:53

标签: php laravel laravel-4

Laravel 4是否可以使用每个项生成正确的HTTPS网址?或者至少生成相对URL而不是绝对(我无法理解为什么这不是默认行为)。

通过Laravel Eg生成的每个表单:

{{ Form::open(array('route' => 'login', 'method' => 'post')) }} //http://example.com/login

将始终使用http作为协议。在Laravel 3中有open_secure方法,但这不再是Laravel 4中的内容。

Laravel Eg生成的每条路线:

{{ URL::route('login') }} //http://example.com/login

等等

注意:您可以使用以下方式绕过路线

{{ URL::route('login', array(), false) }} // /login - This is perfect behavior 

这会创建一个相对URL,它对每个协议都是安全的。

注2 :创建过滤器是可接受的解决方案。它会在POST表单中产生问题,并在每个页面上创建重定向。为什么要增加负载和等待时间?

2 个答案:

答案 0 :(得分:0)

From the docs

Route::get('login', array('https', function()
{
    return 'Must be over HTTPS';
}));

如果路由未定义为仅http或仅https,则使用当前请求的方案(source)。

答案 1 :(得分:0)

如果您的负载均衡器和网站之间的通信也是HTTPS,那么matpop的解决方案将起作用。

如果负载均衡器处理请求的HTTPS部分,我建议添加标头并检查该标头是否存在且是否为预期值。如何配置它(可能它已经默认配置)将取决于您的负载均衡器。