Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,090 of 9,090 pages
About the help in other languages
All help pages

Statisches Veröffentlichen: der Formular-Endpunkt

Der Vertrag zwischen einem Formular auf einer statischen Kopie und der Installation, die es sammelt. Umgesetzt von expStaticFormEndpoint, expStaticFormToken und der Ansicht staticpublish/form; beim Build von…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/specifications/6.0/static-publishing-form-endpoint.md

On this page

This page is a translation. Read the English original

Statisches Veröffentlichen: der Formular-Endpunkt

Der Vertrag zwischen einem Formular auf einer statischen Kopie und der Installation, die es sammelt. Umgesetzt von expStaticFormEndpoint, expStaticFormToken und der Ansicht staticpublish/form; beim Build von expStaticDegrader in die Seiten geschrieben. Seit Exponential 6.0.15.

Verwandt: Dynamische Funktionen, Das Build-Format

Das Formular in der statischen Seite

Ein Build mit Forms=endpoint ändert jedes Formular eines Informationssammlers so:

<form method="post" action="https://www.example.com/staticpublish/form" data-exp-static="form">
<input type="hidden" name="ExpStaticTarget" value="github-public" />
<input type="hidden" name="ExpStaticToken" value="v1.1793586627.57.jwRn67yebKzrLeQWZ3O-nN3oyhya5v2FJSXIByKh0tE" />
... die eigenen Felder des Formulars: ContentObjectID, ContentNodeID, die Attribute, ActionCollectInformation ...
</form>

Das Ziel ist die Adresse der Live-Site des Ziels (LiveURL, oder die SiteURL des Siteaccess über https), gefolgt vom Siteaccess-Pfad des Builds und /staticpublish/form.

Das Token

v1.<ausgestellt>.<Objekt-ID>.<mac>
mac = base64url( HMAC-SHA256( key, "staticpublish-form/1|<target>|<object id>|<issued>" ) )
key = expMailSecret::derive( "staticpublish-form" )

ausgestellt ist die Unix-Zeit des Builds. Ein Token ist gültig, wenn die Version v1 ist, die Objekt-ID der ContentObjectID des Posts gleicht, der MAC für das gesendete Ziel stimmt, ausgestellt höchstens 5 Minuten in der Zukunft und höchstens [StaticPublishSettings] FormTokenDays Tage (Voreinstellung 400) in der Vergangenheit liegt. Das Token enthält kein Geheimnis und keine Sitzung. Ein neues Geheimnis der Installation beendet jedes Token; eine neue Veröffentlichung schreibt neue.

Die Anfrage

POST /staticpublish/form, application/x-www-form-urlencoded oder multipart/form-data, von einem Browser auf der statischen Kopie. OPTIONS wird für Preflights beantwortet. Jede andere Methode ist 405 mit Allow: POST, OPTIONS.

Die Prüfungen, der Reihe nach

#PrüfungAntwort, wenn sie fehlschlägt
1Statisches Veröffentlichen ist eingeschaltet und FormEndpoint=enabled404
2ExpStaticTarget nennt ein Ziel mit Forms=endpoint404
3der Header Origin (oder, ohne ihn, der Ursprung des Referer) ist der Ursprung der PublicURL des Ziels oder https:///http:// seiner CustomDomain403
4ExpStaticToken ist für das Ziel und die ContentObjectID gültig403
5die Adresse des Clients hat weniger als FormRateLimit Mal (Voreinstellung 5) in FormRateWindow Sekunden (Voreinstellung 600) an dieses Ziel gesendet429 mit Retry-After

Gezählt wird je Hash aus Ziel und Adresse in <Cache-Verzeichnis>/staticpublish/rate; die Adresse selbst wird nicht gespeichert.

Die Übergabe

Der Post ohne ExpStaticTarget und ExpStaticToken, dazu ActionCollectInformation, läuft durch content/action als der aktuelle Benutzer (der anonyme Benutzer für einen Besucher). Es gelten die eigenen Prüfungen des Sammlers: Das Objekt muss existieren, lesbar sein und Sammler-Attribute haben; Prüfung, die Regel „eine Antwort je Benutzer“, E-Mail und Weiterleitung sind die der Live-Site. Der Post gilt als angenommen, wenn dieser Lauf mit einer Weiterleitung endet.

Die Antwort

  • JSON, wenn die Anfrage Accept: application/json oder X-Requested-With hat: Status 200 (angenommen), 422 (vom Sammler nicht angenommen) oder der Status der fehlgeschlagenen Prüfung, Inhalt { "ok": true|false, "message": "..." }.
  • Sonst 303 See Other zum Referer (wenn er auf dem Ursprung des Ziels liegt; sonst zur öffentlichen Adresse), mit angehängtem #exp-static-form-sent oder #exp-static-form-failed. Eine Prüfung, die fehlschlägt, bevor der Ursprung bekannt ist (1 bis 3), wird als JSON beantwortet.

CORS: Access-Control-Allow-Origin ist der geprüfte Ursprung der Anfrage, nie *; Access-Control-Allow-Credentials wird nie gesendet; Vary: Origin immer. Ein Preflight von einem Ursprung eines Ziels bekommt 204 mit Access-Control-Allow-Methods: POST, OPTIONS, Access-Control-Allow-Headers: Content-Type, Accept, X-Requested-With und Access-Control-Max-Age: 600. Jede Antwort hat Cache-Control: no-store, X-Content-Type-Options: nosniff und X-Robots-Tag: noindex, nofollow.

Zugriff und Audit

site.ini [RoleSettings] PolicyOmitList[]=staticpublish/form: Jeder darf senden; die Prüfungen oben sind der Schutz. Jede Ablehnung (403, 429) und jeder übergebene Post ist das Audit-Ereignis system.staticpublish.form mit Ziel, Objekt, Ergebnis und Grund.

Ausschalten

[StaticPublishSettings] FormEndpoint=disabled beantwortet jede Anfrage mit 404. Die nächsten Builds ersetzen die Formulare durch den Ersatztext und sagen das in ihren Warnungen.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x