File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 73, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/starlette_wtf/csrf.py", line 175, in endpoint_wrapper
signed_token = await get_csrf_token(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/starlette_wtf/csrf.py", line 246, in get_csrf_token
formdata = await get_formdata(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/starlette_wtf/util.py", line 59, in get_formdata
formdata = ImmutableMultiDict(await request.json())
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/starlette/requests.py", line 249, in json
self._json = json.loads(body)
~~~~~~~~~~^^^^^^
File "/usr/local/lib/python3.13/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
~~~~~~~~~~~~~~~~~~~~~~~^^^
File "/usr/local/lib/python3.13/json/decoder.py", line 345, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/json/decoder.py", line 363, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
if there's a
Content-Typethat's recognized and the body is empty, then an error is raised instead of a 400.