这个问题涉及到这个SO问题和答案(rails-3-ssl-deprecation),建议在Rails 3中使用routes.rb和像以下的路由来处理ssl:
resources :sessions, :constraints => { :protocol => "https" }
# Redirect /foos and anything starting with /foos/ to https.
match "foos(/*path)", :to => redirect { |_, request| "https://" + request.host_with_port + request.fullpath }
我的问题是链接使用相对路径(我认为这是正确的术语),一旦我在https页面上,所有指向网站上其他页面的链接都会使用https。
1) 如何最好地回到不需要https的页面?我必须为所有这些页面设置重定向(希望不是这样),还是有更好的方法。重定向会是这样吗:
match "foos(/*path)", :to => redirect { |_, request| "http://" + request.host_with_port + request.fullpath }
2) 如果需要重定向回http,如何处理只有一个例外情况的情况,即我希望所有方法都是http,除了一个方法? 比如说foos(/ * path)将用于所有foos方法。 但是假设我想让foos / upload_foos使用ssl,我知道如何要求它。
scope :constraints => { :protocol => "https" } do
match 'upload_foos' => 'foos#upload_foos', :via => :post, :as => :upload_foos
end
但是如果我在 foos 路径上加入 HTTP 重定向,那么 HTTPS 的 upload_foos 会发生什么?
scope :protocol => 'http://'
并在我的编辑中添加帮助程序。 - Samuel