Redirect 如何在bidi重定向中添加标题?

Redirect 如何在bidi重定向中添加标题?,redirect,clojure,header,cors,bidi,Redirect,Clojure,Header,Cors,Bidi,我有以下建议: #bidi.ring.Redirect{:status 307, :target "https://some-url"} 我正在尝试向其中添加cors标题,如下所示: (let [redirect (->Redirect 307 "https://some-url") redirect- (assoc redirect :headers {"Access-C

我有以下建议:

#bidi.ring.Redirect{:status 307, :target "https://some-url"}
我正在尝试向其中添加cors标题,如下所示:

(let [redirect (->Redirect 307 "https://some-url")
        redirect- (assoc redirect
                         :headers
                         {"Access-Control-Allow-Origin"
                          "https://some-url"
                          "Access-Control-Allow-Methods"
                          "POST, GET, OPTIONS"
                          "Access-Control-Allow-Headers" "Content-Type"
                          "Location" (:target redirect)
                          })
        ]
    (prn "redirect is " redirect-)
    redirect-)
我得到以下打印:

"redirect is" #bidi.ring.Redirect{:status 307, 
:target "http://some-url" 
:headers {"Access-Control-Allow-Origin" "https://some-url", 
"Access-Control-Allow-Methods" "POST, GET, OPTIONS", 
"Access-Control-Allow-Headers" "Content-Type"}}

这似乎是正确的。但是当我从客户端发出请求时,响应不包含这些头。我做错了什么?

也许你放在Bidi的
重定向对象中的
:headers
不会去任何地方

事实上,如果您遵循对源代码()的
bidi.ring.Redirect
引用,您将看到一个提示,它将把重定向转换为

 {:status  status
  :headers {"Location" location}
  :body    (str "Redirect to " location)}

我对Bidi了解不多,但如果Bidi的重定向限制过大,也许您可以简单地返回自己的{:状态307,:标题{…},:body“请参阅其他地方”}映射。

您是否确认浏览器收到的响应实际上是您想要的307响应?您是否检查了响应的HTTP状态代码?您可以使用浏览器devtools中的网络窗格进行检查。您应该确认浏览器接收到的信息实际上不是意外的4xx或5xx错误。