如何将CORS添加到compojure api应用程序?

如何将CORS添加到compojure api应用程序?,api,clojure,cors,compojure,compojure-api,Api,Clojure,Cors,Compojure,Compojure Api,如何将CORS添加到此代码段 (def app (api {:swagger {:ui "/docs" :spec "/swagger.json"}} (GET "/route-a" [] "a") (GET "/route-b" [] "b") (GET "/route-c" [] "c"))) 我想使用,并尝试过这个,但它似乎没有做任何事情。我希望看到响应头包含Access Con

如何将CORS添加到此代码段

(def app
    (api
        {:swagger {:ui   "/docs"
                   :spec "/swagger.json"}}

       (GET "/route-a" [] "a")
       (GET "/route-b" [] "b")
       (GET "/route-c" [] "c")))
我想使用,并尝试过这个,但它似乎没有做任何事情。我希望看到响应头包含Access Control Allow Origin,但它丢失了

(-> (api
   {:swagger {:ui   "/docs"
              :spec "/swagger.json"}}

   (GET "/route-a" [] "a")
   (GET "/route-b" [] "b")
   (GET "/route-c" [] "c"))

  (wrap-cors :access-control-allow-origin #"http://localhost:81"
             :access-control-allow-headers ["Origin" "X-Requested-With"
                                        "Content-Type" "Accept"]
             :access-control-allow-methods [:get :put :post :delete :options]))

仅当请求具有与指定正则表达式匹配的
Origin
头时,才会返回特定于CORS的响应头(当在浏览器中使用
XMLHttpRequest
发出请求时,会自动添加Origin头)

如果您尝试:

curl -vH "Origin: http://localhost:81" localhost:3000/route-a

(假设您的API在端口3000上可用),您将看到添加了必要的响应头。来自
http://localhost:81
也应该可以工作。

我想你需要允许的方法来添加允许的方法,但它仍然不能为我做任何事情:如果我在localhost:3000上运行API并执行
curl-vH“Origin:http://localhost:81“本地主机:3000/route-a
,我在输出中获得了Access Control Allow Origin和Access Control Allow Methods头