Clojure 2024 状态调查!中分享您的想法。

欢迎!请参阅关于页面,以获取更多信息。

+1

嗨!我在使用 Ring 进行重新定向时遇到问题。如果我在一个使用 POST 方法页面上,进行重新定向将保持不变。我如何强制所有重新定向都是 GET?提前感谢。

1 答案

+2

被选中
 
最佳答案

您至少需要共享一些不工作的代码。

我们在工作中经常使用 ring.util.response/redirect 将处理 POST 请求的处理程序重新定向到新的 URL,这些新 URL 都是 GET 类型——这就是重新定向的工作方式,因为它会生成一个 Location: 报头,浏览器随后使用它来 GET 指定的 URL。


编辑了
你说得对,使用环重定向确实可行,

ring.util.response/redirect

但如果我使用状态码307,我将使用POST进行重定向

(-> (response/redirect url)
       (assoc :session (-> req :session))
       (assoc :status 307))

这不应该能工作吗?
我不确定你在问什么,抱歉。

状态码307应该告诉浏览器在新的位置URL上再次使用相同的HTTP方法(如果POST /url1通过307状态码返回Location /url2,则浏览器应该进行POST /url2)。

如果你想使重定向为GET,不要使用状态码307。
我已经回答了。谢谢帮助!
...