2016-06-29 92 views
2

我有一個Laravel 5.2應用程序,運行在Heroku上,由Cloudflare處理一個自定義域。自定義域使用CNAME將其指向heroku域。我已在Cloudflare上啓用完整SSL,以允許使用https。 heroku網址本身已啓用ssl,所以這不成問題。Laravel在heroku上自定義https域不會生成https路由

當產生途徑(例如,通過類似它包括整個自定義域,但與http而非https這通常會導致瀏覽器控制檯的警告,像這樣:

混合內容:在「https://example.com頁面加載在 安全連接,但包含了針對不安全的 端點「http://example.com/endpoint」的形式。這樣的端點應當 可通過安全連接。

任何想法爲什麼Laravel路由發生器不使用https?

回答

0

.env文件,確保您的APP_URL正顯示出HTTPS

+0

這似乎並不奏效。我的印象是'app.url'配置值僅用於artisan命令。一個理想的解決方案就是生成沒有域部分的路由。例如。 '/ endpoint'而不是'http:// example.com/endpoint' – harryg

+1

啊,看看下面的鏈接,那裏有一個答案,包括'URL :: forceSchema('https');'。你可以把它放在你的'AppServiceProvider'中。 http://laravel.io/forum/12-26-2014-routing-with-https – swatkins

0

你可以告訴路線作爲https

Route::get('signin', ['uses' => '[email protected]', 'https']); 

請確保您有沒有硬編碼的任何資產。

+0

這不會是一個好的解決方案,因爲1)我不得不手動更新路由文件中的每個路由。 2)我的開發環境不是https,所以這會導致開發中的問題。該應用程序應該能夠檢測是否啓用ssl。我覺得這個問題是由於我用herouku使用cloudflare ssl的方式。但它仍然是https端到端。 – harryg

+0

改爲使用'env('https')',然後在'.env'中添加'HTTPS = https'或'HTTPS = http'。 – user2094178