2014-05-20 99 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部分,我會建議添加一個頭並檢查該頭是否存在並且是預期值。如何配置(可能已經配置了默認)取決於你的負載平衡器。