Ruby on Rails 2.3.8: есть ли способ всегда пересылать URL-адрес в https версии? - PullRequest
0 голосов
/ 25 августа 2011

Итак, в некоторых моих записях базы данных есть объект, «контент», который имеет тело, очень похожее на документ.Иногда в теле есть URL, который указывает на изображения на моем сервере приложений.Многие из этих URL-адресов являются HTTP.

Есть ли способ перенаправить все HTTP-запросы в HTTPS?

Я использую Rails 2.3.8
и гем Paperclip

1 Ответ

0 голосов
/ 25 августа 2011

Поскольку некоторые настройки безопасности браузера блокируют активы HTTP при просмотре страницы HTTPS, вы не хотите делать это на уровне веб-сервера (например, 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
...