commit 8bf6bee95ee73e08fca45cdb37476999ae5fc7c6
parent cd4ca3e6c1aed73fad00b2fdd1d5b78add799859
Author: Christian Grothoff <christian@grothoff.org>
Date: Sat, 2 May 2026 22:42:57 +0200
update spec to include 302 redirect"
Diffstat:
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/design-documents/076-paywall-proxy.rst b/design-documents/076-paywall-proxy.rst
@@ -19,7 +19,7 @@ Requirements
* Must withstand high traffic from bots, requests before a payment happened
must be *very* cheap, both in terms of response generation and database
- interaction.
+ interaction. This includes good support for caching.
* Should work not just for our paivana-httpd but also for Turnstile-style
paywalls that need to work with purely static paywall pages without
PHP sessions.
@@ -57,11 +57,14 @@ Steps:
* If such a cookie is set and valid, the request is
reverse-proxied to upstream. *Stop.*
- * Otherwise, a static non-cachable paywall page is returned,
- including a machine-readable ``Paivana`` HTTP header with
- the ``taler://pay-template/`` URL minus the client-computed
- ``{paivana_id}`` and fullfillment URL (see below).
- *Continue.*
+ * Otherwise, a 302 redirect to ``/.well-known/paivana/templates/$ID``
+ is returned.
+
+* When the browser requests ``/.well-known/paivana/templates/$ID``
+ a static **cachable** paywall page is returned,
+ including a machine-readable ``Paivana`` HTTP header with
+ the ``taler://pay-template/`` URL minus the client-computed
+ ``{paivana_id}`` and fullfillment URL (see below).
* The browser (rendering the paywall page) generates a random
*paivana ID* via JS using the current time (``cur_time``) in seconds