【问题标题】:how to redirect_to and return a 200 status code如何重定向到并返回 200 状态码
【发布时间】:2014-03-25 01:12:46
【问题描述】:

我有一个 Rails 应用程序,当用户填写表单时,它会使用新信用卡对条带进行 ping 操作。然后它在完成后重定向回主页。但是,stripe 说我返回的是 503(我认为这是代码)而不是 200。我正在执行常规的 redirect_to :root。如何确保也返回 200 代码?

【问题讨论】:

  • 另外你确定你没有收到 StripeException 吗?
  • 正常重定向不会返回 503 错误。我认为我们需要更多上下文 - 为什么 stripe 会关心您在浏览器中返回的内容?

标签: ruby-on-rails


【解决方案1】:

恐怕你不能。

轨道方法

redirect_to some_path

通过向浏览器发送带有 302 status code 和 URL 目标(作为 HTTP 响应标头)的 HTTP 响应来工作。
浏览器收到响应后,会自动向新 URL 发起新的 HTTP 请求。

重定向不会在 Rails 中发生。很多人认为redirect_to 是一种从控制器动作跳转到另一个动作的方法,但实际上它只是要求浏览器发送另一个请求。

现在,浏览器知道如何处理这种响应,因为302 是一个 HTTP 状态码。这就是它的意义。您可以redirect_to 的状态码更改为200,但这会中断重定向。

【讨论】:

    【解决方案2】:

    redirect_to :root, 状态: :ok

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • 我明白了,我的印象是他不知道该怎么做。他确实说过“我如何确保也返回 200 码?”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2020-01-21
    • 2012-07-25
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多