繁体   English   中英

Ruby on Rails 2.3.8:有没有办法始终转发到URL的https版本?

[英]Ruby on Rails 2.3.8: is there a way to always forward to the https version of an url?

因此,在我的某些数据库记录中,有一个对象“内容”具有主体,就像文档一样。 有时,主体的URL指向我的应用服务器上的图像。 这些URL中有许多是HTTP。

无论如何,是否会将所有HTTP请求重定向到HTTPS?

我正在使用Rails 2.3.8
和回形针宝石

由于某些浏览器安全设置将在查看HTTPS页面时阻止HTTP资产,因此您不希望在Web服务器级别(例如mod_rewrite)执行此操作,因为某些浏览器无法做到这一点。

您不想在视图或控制器级别处理此问题-模型是您在其中执行业务规则(例如将其全部保留为HTTPS)的地方。

1)防止保存HTTP链接

class Content < ActiveRecord::Base
  ...
  before_validation :force_https
  def force_https
    unless body.nil?
      self.body.gsub! /http:\/\/my\.app\.server/, 'https://my.app.server'
    end
  end
  ...
end

2)清理现有内容

启动控制台并运行以下命令:

Content.all.each do |c|
  c.update_attribute 'body', 
     c.body.gsub(/http:\/\/my\.app\.server/, 'https://my.app.server')
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM