Don’t use JSON for the response unless you include the response header to specify it’s application/json
. You’re better off with regular plaintext unless the request header Accept asked for JSON and you respond with the right header.
That also means you can send a response based on what the request asked for.
403 Forbidden (not Unauthorized) is usually enough most of the time. Most of those errors are not meant for consumption by an application because it’s rare for 4xx codes to have a contract. They tend to go to a log and output for human readers later, so I’d lean on text as default.
And a
\n
.