Name the cause on the page for a refused form (closes #358)
check / check (push) Canceled after 0s

The CSRF middleware answered a refused login or generator form with the
library's bare text, such as "Forbidden - origin invalid". It now answers
403 with a page that names the cause and what to do, and logs a warning
with the request ID and the library's reason. A page opened over plain
HTTP with debug off and a form from another host both fail the origin
check; the page tells them apart by the host in the Origin or Referer
header.

Model: opus-5-5
This commit is contained in:
sneak committed 2026-11-11 20:33:31 +00:00
1 parent 092176d917
commit b4501fdd89
7 files changed
+312 -6

No files matched your search

+3
View File
@@ -376,6 +376,9 @@ instead. Plain HTTP is for development on the browser's own machine. The login
session cookie is always marked `Secure`. Over plain HTTP a browser keeps such a
cookie only for its own machine (`localhost`), if at all.
A form refused with 403 gets a page that names the cause and what to do about
it. pixa logs the cause as a warning with the request ID.
The image routes answer the errors listed for them with a JSON body holding
`error`, `status` and `timestamp`.