Clojure环形cors/包裹cors设置

Clojure环形cors/包裹cors设置,clojure,cors,clojurescript,Clojure,Cors,Clojurescript,我正在使用并试图为(wrap cors)函数传递cors策略。这就是我的代码的样子: (def cors-policy {:access-control-allow-origin [#"http://localhost:8080"] :access-control-allow-methods [:get :put :post]}) (def dev-handler (-> #'japi/routes wrap-rel

我正在使用并试图为(wrap cors)函数传递cors策略。这就是我的代码的样子:

(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))
(def cors策略
{:访问控制允许原点[#”http://localhost:8080"]
:访问控制允许方法[:get:put:post]})
(def dev handler(->#'japi/routes)
包裹重新装载
包裹参数
(wrap cors cors policy);;包装器使用一种“模式”,这种模式有时会被看到并关注于
“人类消费”的功能。它采取的“其余”的功能
参数并将其成对转换为映射。这已经是“meh”
对于人类和机器来说都是非常糟糕的(例如,作为参数传递)

你必须这样称呼它:

(wrap-cors $handler :a 1 :b 2)
因此,最简单的方法是:

(def cors-policy
  [:a 1
   :b 2])

(apply wrap-cors $handler cors-policy)
或者如果你想坚持地图(这是一个好方法),你必须 事先把地图展平

(apply wrap-cors $handler (into [] cat cors-policy))
但是使用线程宏
->
后,这就变得更难了 现在(
->
只是一个宏,生成的代码将是
(apply$handler wrap cors…)
,这是意外的

因此,在这一点上,我将添加我自己的
defn
,它只需要处理程序 再来一次,例如

(defn cors-wrapper
  [handler config-map]
  (apply wrap-cors handler (into [] cat config-map)))