2024年Clojure状态调查!分享你的想法。

欢迎!请查看关于页面,了解更多关于这是如何工作的信息。

+1

嗨!我在使用Ring进行重定向时遇到了问题。如果我在使用POST方法的页面上,重定向会保持原样。我该如何强制所有重定向都使用GET?提前感谢您。

1 条答案

+2

选择
 
最佳答案

你需要分享至少一些不工作的代码。

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


编辑
你说得对,使用环重定向可以工作,

ring.util.response/redirect

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

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

这不是应该工作吗?
我不确定你在问什么,对不起。

状态 307 应该告诉浏览器在新位置的 URL 上再次使用相同的 HTTP 方法(所以如果 POST /url1 导致 Location /url2 并以状态 307 结束,则浏览器应执行 POST /url2)。

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