Полный стек приложения Reagent + Ring Clojure + ClojureScript получает 403 `Неверный токен защиты от подделки`

Я пытаюсь настроить полнофункциональное веб-приложение Clojure и ClojureScript. Я использую Reagent и Ring, но при попытке опубликовать данные с помощью Promesa сталкиваюсь с ошибкой 403.

На стороне ClojureScript у меня есть следующая страница, на которой он пытается опубликовать данные и дождаться ответа.

      (defn trigger-page []
  (let [do-the-thing (fn []
                        (promesa/let [_response (js/fetch "api/trigger/" (clj->js {:headers {:Content-Type "application/json"}
                                                                              :method "POST"
                                                                              :body (js/JSON.stringify #js {:args "TEST"})}))
                                response (.json _response)
                                data (js->clj response :keywordize-keys true)]
                          (js/console.log response)
                          data))]
  (fn []
    [:span.main
     (js/console.log "test")
     [:h1 "Trigger"]
     [:button {:on-click #(do-the-thing)} "Trigger"]
     [:ul]])))

В бэкэнде Clojure у меня есть приложение и вспомогательная функция, определенные следующим образом:

      (defn do-the-stuff [req]
  (r/response {:response "STUFF"}))

(def app
  (reitit-ring/ring-handler
   (reitit-ring/router
    [["/" {:get {:handler index-handler}}]
     ["/trigger" {:get {:handler index-handler}}]
     ["api/"
      ["trigger/" {:post do-the-stuff}]]
     ["/about" {:get {:handler index-handler}}]])
   (reitit-ring/routes
    (reitit-ring/create-resource-handler {:path "/" :root "/public"})
    (reitit-ring/create-default-handler))
   {:middleware middleware}))

Промежуточное программное обеспечение по умолчанию создается на основе шаблона реагента Лейнингена:

      (def middleware
  [#(wrap-defaults % site-defaults)
   wrap-exceptions
   wrap-reload])

В настоящее время, когда я нажимаю кнопку триггера, я получаю сообщение 403.Invalid anti-forgery tokenответ. Я пробовал использовать Ring-Clojure/Ring-Anti-Forgery, но безуспешно. Буду очень признателен за любые рекомендации!

0 ответов

Другие вопросы по тегам