Wie kann ich beim Senden eines Formulars ein benutzerdefiniertes Feld im POST - Header festlegen?
Das geht nicht - AFAIK.
Sie können jedoch beispielsweise jquery verwenden (obwohl Sie es mit einfachem Javascript tun können), um das Formular zu serialisieren und (mit AJAX) zu senden, während Sie Ihren benutzerdefinierten Header hinzufügen.
Schauen Sie sich die Jquery serialize
an, die ein HTML-FORM in form-url-encoded
-Werte ändert, die für den POST bereit sind.
Mein Vorschlag ist, entweder aufzunehmen
Legen Sie einen Cookie-Wert auf der Seite fest und lesen Sie ihn auf der Serverseite zurück.
Es ist nicht möglich, einen bestimmten Header festzulegen, aber der Wert ist im Headerbereich und nicht im Inhaltstext verfügbar.
Aus FormData Dokumentation:
XMLHttpRequest Level 2 fügt Unterstützung für die neue FormData-Schnittstelle hinzu. FormData-Objekte bieten eine Möglichkeit, auf einfache Weise eine Gruppe von Schlüssel/Wert-Paaren zu erstellen, die Formularfelder und deren Werte darstellen, die dann mit der
XMLHttpRequest
send()
-Methode problemlos gesendet werden können.
Mit einer XMLHttpRequest
können Sie die benutzerdefinierten Header festlegen und dann die POST
ausführen.
Tatsächlich ist es eine bessere Möglichkeit, ein Cookie auf der Clientseite zu speichern. Dann wird der Cookie automatisch mit jedem Seitenheader für diese bestimmte Domain gesendet. In node-js können Sie beispielsweise ein Cookie auf folgende Weise setzen:
res.cookie('token', "xyz....", { httpOnly: true });
Jetzt können Sie darauf zugreifen:
app.get('/',function(req, res){
var token = req.cookies.token
});
Beachten Sie, dass httpOnly:true
sicherstellt, dass auf das Cookie normalerweise nicht manuell oder über Javascript zugegriffen werden kann und nur der Browser darauf zugreifen kann ..__ Wenn Sie Kopfzeilen oder Sicherheitstoken mit einem Formularpost und nicht über Ajax senden möchten, ist dies in den meisten Fällen möglich als sicherer Weg betrachtet werden. Stellen Sie jedoch sicher, dass die Daten über das sichere Protokoll/ssl gesendet werden, wenn Sie vertrauliche, benutzerbezogene Informationen speichern, was normalerweise der Fall ist.
Hier ist was ich in Kneipe/Jade gemacht habe
extends layout
block content
script(src="/jquery/dist/jquery.js")
script.
function doThePost() {
var jqXHR = $.ajax({
type:'post'
, url:<blabla>
, headers: {
'x-custom1': 'blabla'
, 'x-custom2': 'blabla'
, 'content-type': 'application/json'
}
, data: {
'id': 123456, blabla
}
})
.done(function(data, status, req) { console.log("done", data, status, req); })
.fail(function(req, status, err) { console.log("fail", req, status, err); });
}
h1= title
button(onclick='doThePost()') Click
Sie können $ .ajax verwenden, um das natürliche Verhalten von <form method="POST">
..__ zu vermeiden. Sie können beispielsweise der Übermittlungsschaltfläche ein Ereignis hinzufügen und die Anforderung POST als AJAX behandeln.