微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 如何在Rails 4中为某些路径选择性地启用SSL?

如何为给定路径关闭SSL HTTPS?我看到 Enable SSL for certain resource actions,但那是为单个路径启用HTTPS.我的配置有

config.force_ssl = true

但是,当我显示一个包含iframe的页面并嵌入外部源时

<iframe src='http://www.

然后它甚至没有出现(Chrome),因为它是混合内容.所以我想为具有iframe的单一路由禁用SSL. (我真的想根据内容打开和关闭它.)

我尝试将其添加到我的routes.rb中

get 'frame',:constraints => { :protocol => 'http' }

但是这给了一个错误http://127.0.0.1:3000/posts/136/frame

No route matches [GET] "/posts/136/frame"

即使路线出现了

frame_post GET  /posts/:id/frame(.:format)  posts#frame {:protocol=>"http"}

我也看到了Force SSL for specific routes in Rails 3.1并尝试过

gem 'rack-ssl-enforcer' # Gemfile
config.middleware.use Rack::SslEnforcer,:except => [ /\/frame$/ ],:strict => true # application.rb

但它仍然总是重定向到https.我也试过了

force_ssl :except => :frame # posts_controller.rb

但这也不起作用.

我正在使用Rails 4.1.

解决方法

Rack ssl enforcer是一个很好的解决方案 – 你的正则表达式是错误的.在您的表单中,正则表达式只会排除完全为“/ frame”的路径,并且不会排除在/ frame之前有任何内容的路径

如果要排除以/ frame结尾的任何路径,正确的正则表达式将是:

\.*\/frame$/

导致配置:

config.middleware.use Rack::SslEnforcer,:except => [ \.*\/frame$/ ],:strict => true

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐