ruby-on-rails - rails : ActiveResource and Apache Redirect

标签 ruby-on-rails http redirect https activeresource

我有 Rails 应用程序,它们使用 ActiveResource 相互通信。我已经设置了 VHOST 以将每个 HTTP 请求重定向到 HTTPS。这是一个应用程序的 VHOST:

<VirtualHost *.80>
 <Location />
    Redirect permanent / https://my.app.com/
 </Location>
</VirtualHost>

#http requests will forwarded here by the above Redirect
<VirtualHost *.443>

 ....
</VirtualHost>

这会在我通过浏览器访问时重定向查找,但是当我通过 ActiveResource 发送 HTTP 请求时,它会返回错误:Moved Permanently。我知道在上述设置中可能会发生这种情况,但是如何应对这种情况并使 ActiveResource 工作,即使它向 HTTP 发送请求(应该转发到 HTTPS)?

谢谢,

伊姆兰

最佳答案

Rails 无法自动重定向 ActiveResource 调用,因为根据 HTTP spec,只有 GETHEAD 请求可以自动重定向.

因此,来自服务器的重定向将引发 ActiveResource::Redirection 异常,您必须在代码中处理此异常:

begin
  # Make some ActiveResource calls
rescue ActiveResource::Redirection
  # Error handling
end

您可以尝试在 rescue block 中发出新的 HTTPS 请求(可能通过更新 ActiveResource 模型的 site 属性)。但是,您需要围绕所有 ActiveResource 操作进行这种错误处理,这会使您的代码更难阅读和维护。

因此,我的建议是您不要尝试在您的代码中处理重定向,而是要求所有连接到您的应用程序的客户端始终使用 HTTPS 版本。

关于ruby-on-rails - rails : ActiveResource and Apache Redirect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4500931/

相关文章:

http - 多部分/表单数据中的新行是否重要

android - Android 上的 FFMPEG "no such file or directory"

amazon-s3 - 将根域名重定向到亚马逊s3

javascript - 用替代内容(HTML + CSS + JS)替换整个网页

http - 解析 HTTP - Bytes.length != String.length

wordpress - 如何在复杂的设置下提交我的网站以进行适当的 SEO?

ruby-on-rails - NoMethodError - 未定义方法 `get' 为 nil :NilClass

ruby-on-rails - rails : Get "gem css_views" working for dynamic CSS

ruby-on-rails - 无法在 Mountain Lion 中安装 rmagick

javascript - jquery select2 v4 - 选择选择元素上的默认选项