导致混合内容警告的导轨形式
问题描述:
在我的Rails应用程序中,我使用两个Rails的原生form_tag
方法和simple_form rubygem提供的simple_form_for
方法。导致混合内容警告的导轨形式
他们两人都是导致在镀铬控制台以下警告:
混合内容:在“https://example.com”加载通过安全连接的页面,但包含针对不安全的端点'形式http://example.com'。该端点应通过安全连接提供。
实际上,呈现的HTML表单使用http
协议来表示它们的action
属性。
这是什么原因?我所有其他的URL都使用https
协议。
答
您有不正确的协议设置为您的环境。
您的服务器在HTTPS上运行,窗体将创建HTTP URL。
您需要告诉您的网址助手使用与您的服务器针对您的环境运行相同的协议来构建网址。
发展应该在HTTP运行,分期应该是HTTPS和生产以及HTTPS。
有不同的方法如何做到这一点。最好是在您的环境中设置协议配置文件。所以,放置这一行:
Rails.application.routes.default_url_options[:protocol] = 'https'
到环境中的配置文件像production.rb和staging.rb。
另一种方法是按照控制器动作设置默认协议。 Check this one for more info。
如果您使用的是邮件程序,请检查您的邮件程序协议设置。如所述here。
您的表单是否指定了http协议?通常它只有一条相对路径,不是吗?你如何创建表单? – EJ2015
@ EJ2015我已经使用'simple_form_for(@object)'/'form_tag(some_url)' - >没有相对路径 – jonhue