I copied some old code that was working in compojure 1.1.18 and other old libs, but using the latest versions I can't get it to work.
Here's my minimal example code copied from the minimal example here to demonstrate that with latest ring and compojure libraries, I get an error when I send an http POST
, even with the header set.
lein ring server
to start it, then do
curl -X GET --cookie-jar cookies "http://localhost:3000/"
which results in something like this:
{"csrf-token":"7JnNbzx8BNG/kAeH4bz1jDdGc7zPC4TddDyiyPGX3jmpVilhyXJ7AOjfJgeQllGthFeVS/rgG4GpkUaF"}
But when I do this
curl -X POST -v --cookie cookies -F "[email protected]" --header "X-CSRF-Token: 7JnNbzx8BNG/kAeH4bz1jDdGc7zPC4TddDyiyPGX3jmpVilhyXJ7AOjfJgeQllGthFeVS/rgG4GpkUaF" http://localhost:3000/send
I get <h1>Invalid anti-forgery token</h1>
Am I doing something wrong?
The code I borrowed was intended to answer this question.
wrap-defaults
andsite-defaults
in thering-defaults
package that replaces the deprecated compojurehandler
namespace automatically require CSRF tokens for HTTPPOST
et al. So my code generates the token twice and I verify against the wrong one. I'm working on a fix... – Grizzle