Ошибка REST API CORS при попытке доступа к нему из веб-приложения - PullRequest
0 голосов
/ 27 июня 2019

Я занимаюсь разработкой веб-приложения с изменением фрейма (lein new re-frame <app-name> +routes) и теперь хочу получить данные из базы данных.Поскольку я использую Clojurescript, я подумал о создании API с Clojure (lein new luminus <api-name> +postgres +service) и подключении к моей базе данных Postgres.

Хотя оба приложения работают и работают, запросы AJAX не выполняются из-за ошибки CORS.

Мое приложение перекадровок работает на localhost:3449, а мое API-приложение работает на localhost:3000/api.

Как мне устранить эту ошибку?Я не знаю, где поставить {"Access-Control-Allow-Origin" "*"}

1 Ответ

0 голосов
/ 27 июня 2019

С помощью squiresuzuki в Clojure Reddit, который указал мне, чтобы я читал о промежуточном программном обеспечении, я заставил этот API работать, создав промежуточное программное обеспечение, которое добавляет необходимые заголовки для разрешения запросов Cross Origin.

Вфайл middleware.clj Я изменил следующее:

(defn wrap-cors
  "Wrap the server response with new headers to allow Cross Origin."
  [handler]
  (fn [request]
    (let [response (handler request)]
      (-> response
          (assoc-in [:headers "Access-Control-Allow-Origin"] "http://localhost:3449")
          (assoc-in [:headers "Access-Control-Allow-Headers"] "x-requested-with, content-type")
          (assoc-in [:headers "Access-Control-Allow-Methods"] "*")))))

(defn wrap-base [handler]
  (-> ((:middleware defaults) handler)
      (wrap-cors) ; enable CORS
      (wrap-defaults
       (-> site-defaults
           (assoc-in [:security :anti-forgery] false)
           (assoc-in [:session :store] (ttl-memory-store (* 60 30)))))))
...