おもちゃの Web アプリケーションを作成するために試薬と構成ツールを使用していますが、サーバーが CSRF Cookie を送信しない理由がわかりません。他の回答といくつかのブログ投稿は、 compojure のデフォルト設定が CSRF トークンを送信するようになり、手動で再送信することは実際にはバグであることを暗示しているようです。POST/art
エンドポイントに到達しようとすると、403 Forbidden 応答が返されます。CSRFトークンを含むCookieを取得するページはないため、POSTリクエストで送信できません。何かアドバイス?
;;server.clj
(ns my-app.server
(:require [my-app.handler :refer [app]]
[environ.core :refer [env]]
[ring.adapter.jetty :refer [run-jetty]])
(:gen-class))
(defn -main [& args]
(let [port (Integer/parseInt (or (env :port) "3000"))]
(run-jetty app {:port port :join? false})))
;; handler.clj
(ns my-app.handler
(:require [compojure.core :refer [GET POST defroutes]]
[compojure.route :refer [not-found resources]]
[hiccup.page :refer [include-js include-css html5]]
[my-app.middleware :refer [wrap-middleware]]
[environ.core :refer [env]]))
(defroutes routes
(GET "/" [] loading-page)
(GET "/about" [] loading-page)
(GET "/art" [] loading-page)
(POST "/art" request {:sent (:body request) :hello "world"})
(resources "/")
(not-found "Not Found"))
(def app (wrap-middleware #'routes))
;;middleware.clj
(ns stagistry.middleware
(:require [ring.middleware.defaults :refer [site-defaults wrap-defaults]]
[prone.middleware :refer [wrap-exceptions]]
[ring.middleware.reload :refer [wrap-reload]]))
(defn wrap-middleware [handler]
(-> handler
(wrap-defaults site-defaults)
wrap-exceptions
wrap-reload))
何が問題なのかまだわからないので、コード自体を github hereに投げました。