Полный стек приложения 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, но безуспешно. Буду очень признателен за любые рекомендации!