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方法(因此,如果使用状态码307的POST /url1产生Location /url2,则浏览器应该执行POST /url2)。

如果您想使重定向为GET,请勿使用状态码307。
我已经回答了,谢谢帮助!
欢迎来到Clojure问答社区,在这里您可以向Clojure社区成员提问并获取答案。
...