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

欢迎!请访问关于页面,了解如何操作的更多信息。

+1

你好!我在使用Ring进行重定向时遇到了问题。如果我在一个采用POST方法的页面上,进行重定向会保留状态。我如何才能强迫所有的重定向都使用GET方法呢?非常感谢。

1 答案

+2

选中
 
最佳答案

请分享至少一部分不工作的代码。

我们在工作中经常使用ring.util.response/redirect来重定向从处理POST请求的处理程序到新的GET URL -- 这基本上是重定向的定义,因为它会产生一个Location:标题,浏览器随后使用它来获取指定的URL。


编辑
你说得对,使用环重定向是有效的,

ring.util.response/redirect

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

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

难道不应该这样工作吗?
我不确定你问的是什么,很抱歉。

状态码307应该指示浏览器在新的位置URL上使用相同的HTTP方法再次进行操作(所以如果使用状态码307的POST /url1产生Location /url2,则浏览器应该执行POST /url2)。

如果你希望重定向为GET,请勿使用状态码307。
我已经回答过这个问题了。谢谢你的帮助!
...