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

发布于 2024-12-01 09:29:46 字数 163 浏览 1 评论 0原文

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

有没有办法将所有 HTTP 请求重定向到 HTTPS?

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

So, in some of my database records, there is an object, "content" that has a body, much like a document would. Sometimes the body has URL that point to images on my app server. Many of these URLs are HTTP.

Is there anyway to redirect all HTTP requests to HTTPS?

I'm using Rails 2.3.8
and the Paperclip gem

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

落日海湾 2024-12-08 09:29:46

由于某些浏览器安全设置会在查看 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

Because some browser security settings will block HTTP assets when viewing a HTTPS page, you don't want to do this at the web server (e.g. mod_rewrite) level since some browsers won't make it that far.

You don't want to handle this at the view or controller level - the model is where you enforce business rules like keep it all HTTPS.

1) Prevent HTTP links from being saved

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) Clean up existing content

Fire up console and run this:

Content.all.each do |c|
  c.update_attribute 'body', 
     c.body.gsub(/http:\/\/my\.app\.server/, 'https://my.app.server')
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文