Как добавить CORS в приложение compojure-api? - PullRequest
0 голосов
/ 10 октября 2018

Как я могу добавить CORS к этому фрагменту кода?

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

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

Я хотел бы использовать https://github.com/r0man/ring-cors и пробовал это, но, похоже, ничего не помогло.Я хотел бы видеть заголовок ответа, содержащий 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]))

1 Ответ

0 голосов
/ 12 октября 2018

Заголовки ответов, специфичные для CORS, возвращаются, только если запрос имеет заголовок Origin, который соответствует указанному регулярному выражению (когда запрос выполняется с помощью XMLHttpRequest в браузере, заголовок Origin добавляется автоматически).

Если вы попробуете:

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

(при условии, что ваш API доступен на порту 3000), вы увидите, что добавлены необходимые заголовки ответа.AJAX-запросы от http://localhost:81 также должны работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...