【发布时间】:2021-01-05 15:55:02
【问题描述】:
我正在使用ring-cors 并尝试为 (wrap-cors) 函数传递一个 cors-policy。这是我的代码的样子:
(def cors-policy
{:access-control-allow-origin [#"http://localhost:8080"]
:access-control-allow-methods [:get :put :post]})
(def dev-handler (-> #'japi/routes
wrap-reload
wrap-params
(wrap-cors cors-policy) ;; <- Here
wrap-json-response
(wrap-defaults api-defaults)
push-state/handle))
这会导致错误:
没有为键提供值:{:access-control-allow-origin #{"http://localhost:8080"}, :access-control-allow-methods #{:get :post :put}}
查看(wrap-cors) 的源代码,错误似乎来自trying to apply (hash-map) to my cors-policy map。似乎我无法传递映射定义,而是在调用(wrap-cors)时必须显式传递键/值。有什么想法可以解决这个问题?
我已经在 repl 中尝试了 (apply hash-map cors-policy) 并且效果很好,但是当传递像 (wrap-cors identity cors-policy) 这样的虚拟处理程序时,这又会导致同样的错误。
编辑: cfrick 的回答是正确的,但是请注意,我必须在我的 dev-handler 定义的末尾删除 shadow-cljs'(push-state/handle)处理程序设置工作。
【问题讨论】:
标签: clojure cors clojurescript