2017-10-08 111 views
0

在我的Rails應用程序中,我使用兩個Rails的原生form_tag方法和simple_form ruby​​gem提供的simple_form_for方法。導致混合內容警告的導軌形式

他們兩人都是導致在鍍鉻控制檯以下警告:

混合內容:在「https://example.com」加載通過安全連接的頁面,但包含針對不安全的端點'形式http://example.com'。該端點應通過安全連接提供。

實際上,呈現的HTML表單使用http協議來表示它們的action屬性。

這是什麼原因?我所有其他的URL都使用https協議。

+0

您的表單是否指定了http協議?通常它只有一條相對路徑,不是嗎?你如何創建表單? – EJ2015

+0

@ EJ2015我已經使用'simple_form_for(@object)'/'form_tag(some_url)' - >沒有相對路徑 – jonhue

回答

1

您有不正確的協議設置爲您的環境。

您的服務器在HTTPS上運行,窗體將創建HTTP URL。

您需要告訴您的網址助手使用與您的服務器針對您的環境運行相同的協議來構建網址。

發展應該在HTTP運行,分期應該是HTTPS和生產以及HTTPS。

有不同的方法如何做到這一點。最好是在您的環境中設置協議配置文件。所以,放置這一行:

Rails.application.routes.default_url_options[:protocol] = 'https' 

到環境中的配置文件像production.rbstaging.rb

另一種方法是按照控制器動作設置默認協議。 Check this one for more info

如果您使用的是郵件程序,請檢查您的郵件程序協議設置。如所述here