gpt4 book ai didi

ruby-on-rails - 如何防止 force_ssl 在重定向中破坏参数?

转载 作者:行者123 更新时间:2023-12-04 03:34:05 24 4
gpt4 key购买 nike

我有以下路线:

resources :widgets do
resources :orders
end

所以一个请求,例如至 /widgets/1/orders/new转到 OrderController,它可以访问 params[:widget_id]知道正在购买哪个小部件。

问题是这样的:我使用 force_ssl在订单 Controller 中。这导致请求:
http://www.example.com/widgets/1/orders/new

被重定向(302)到:
https://www.example.com/

换句话说,force_ssl 正在完成它的工作(重定向到 URL 的 https 协议(protocol)版本),但正在破坏过程中路由的动态段指定的参数。我怎样才能防止这种情况发生(最好)或以最不冒犯的方式解决它?

请注意,这是托管在 Heroku 上的,因此例如Apache 重定向对我不起作用。

最佳答案

我相信 的默认行为force_ssl 是将参数从非安全连接传递到安全连接。如果这不是您想要的行为,您可以尝试通过添加这样的初始化程序来覆盖 force_ssl 函数:

#
# Pass parameters in SSL redirects
#
module ActionController
module ForceSSL
module ClassMethods
def force_ssl(options = {})
host = options.delete(:host)
before_filter(options) do
if !request.ssl? && !Rails.env.development?

secure_params = request.params.clone
[:only, :except, :protocol, :status, :host].each {|s| secure_params.delete(s)}

redirect_options = {:protocol => 'https://', :status => :moved_permanently}
redirect_options.merge!(:host => host) if host
redirect_to redirect_options.merge(secure_params)
end
end

end
end
end
end

关于ruby-on-rails - 如何防止 force_ssl 在重定向中破坏参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7744138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com