2014-05-20 62 views
1

Laravel 4是否有可能生成正确的HTTPS URL,项?或者至少生成相对URL而不是绝对的(我无法理解为什么这不是默认行为)。Laravel 4生成HTTPS URL的

经由Laravel例如生成的每个形式:

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

将始终使用HTTP作为协议。在Laravel 3有open_secure方法,但已不再是内部Laravel 4

每个路径由Laravel如产生:

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

等,等

注意:您可以避开路线的使用:

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

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

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

+0

您开始的页面是否也有https?即显示链接的页面 - 是https吗? – Laurence

+0

这是我现在面临的一个真正的PITA问题... –

回答

0

From the docs

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

如果没有定义路由是仅HTTP或https只,当前请求的方案被用于(source)。

+0

嗯有趣,但似乎并非如此,在负载均衡服务器(Laravel无法检测HTTPS/HTTP)或普通单实例服务器 – Mattisdada

+0

我很确定Laravel 4需要改进,但是如果将路由定义为仅限https,它应该在任何情况下都能正常工作。 – matpop

+0

我知道它是封闭的和旧的,但如果我有 Route :: controller('users','UsersController'); 我如何让它拥有https attr? – RaduM

0

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

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