Как изменить код просмотра Rails для посетителей сайта, используя SSL? - PullRequest
0 голосов
/ 31 марта 2010

В приложении My Rails есть некоторые страницы, для которых требуется SSL, а другие - для SSL. Дополнительные страницы используют некоторые ресурсы, которые обслуживаются вне сайта (изображения от поставщика), которые имеют как http, так и https URL. Мне нужно использовать https при обращении к странице через SSL, чтобы избежать страшного предупреждения «эта страница содержит как защищенные, так и незащищенные элементы».

Я написал код, который по умолчанию возвращает URL-адреса изображений как http и https, если требуется. Теперь моя проблема заключается в определении того, как поступил запрос. Request.ssl? не работает в представлениях.

Я пытался использовать before_filter, который устанавливает что-то вроде @ssl_request, используя request.ssl?, Но это также всегда возвращает false. Есть ли более элегантный способ сделать это?

Серверный стек - Nginx и Passenger. Другие приложения со стеками Apache => Mongrel передают заголовок X_FORWARDED_PROTO, чтобы сообщить Rails, что SSL используется или не используется; Возможно ли, что Nginx / Passenger этого не делает?

Ответы [ 2 ]

1 голос
/ 31 марта 2010

Попробуйте before_filter в application.rb:

before_filter { |c| UMNAuthFilter.filter(c) if c.request.ssl? }

отредактировано, чтобы добавить корректность:)

1 голос
/ 31 марта 2010
<img src="//cdn.example.com/images/99dbe20bc52e4caa.jpg">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...