当我通过 https 请求页面时,我最终得到一个与原始请求具有完全相同 url 的表单操-6ren">
gpt4 book ai didi

ruby-on-rails - 为什么 ActionDispatch::Request.original_url 返回错误的方案?

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:17 30 4
gpt4 key购买 nike

我有一个 Ruby on Rails 应用程序,它在模板中包含以下内容...

<form action="<%= request.original_url %>" method="post">

当我通过 https 请求页面时,我最终得到一个与原始请求具有完全相同 url 的表单操作,但不是 https://它被生成为 http:// ,导致混合内容错误。

我错过了什么?什么情况下会request.original_url返回错误的方案?

我正在使用 Unicorn 和 nginx 运行 Ruby on Rails。

最佳答案

看起来这可能是问题的解决方案:

http://blog.seancarpenter.net/2013/09/02/rails-ssl-route-generation-with-nginx-and-unicorn/

因为站点在 nginx 中运行,nginx 正在终止 SSL,而 Rails 不知道是这种情况。

要将此信息传递给 Rails,需要设置 nginx 配置,以便在将请求转发到应用服务器时添加 X-Forwarded-Proto https header 。

上述文章中的示例配置显示...

位置@app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https; # SSL 的新 header
proxy_set_header 主机 $http_host;
proxy_redirect 关闭;
proxy_pass http://unicorn_something_server;
}

关于ruby-on-rails - 为什么 ActionDispatch::Request.original_url 返回错误的方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31171174/

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