フォームの送信時にPOSTヘッダーにカスタムフィールドを設定するにはどうすればよいですか?
それはできません-私の知る限り。
ただし、たとえばjqueryを使用して(プレーンJavaScriptで実行できますが)、フォームをシリアル化し、カスタムヘッダーを追加しながら送信(AJAXを使用)することができます。
Jquery serialize
を見てください。これは、HTML FORMをPOSTの準備ができているform-url-encoded
値に変更します。
私の提案は、どちらかを含めることです
ページにCookieの値を設定し、サーバー側に読み戻します。
特定のヘッダーを設定することはできませんが、コンテンツ本文ではなくヘッダーセクションで値にアクセスできます。
FormData ドキュメントから:
XMLHttpRequest Level 2は、新しいFormDataインターフェイスのサポートを追加します。 FormDataオブジェクトは、フォームフィールドとその値を表すキー/値ペアのセットを簡単に構築する方法を提供し、
XMLHttpRequest
send()
メソッドを使用して簡単に送信できます。
XMLHttpRequest
を使用すると、カスタムヘッダーを設定してからPOST
を実行できます。
実際、クライアント側でCookieを保存するためのより良い方法です。その後、特定のドメインのすべてのページヘッダーとともにCookieが自動的に送信されます。
Node-jsでは、 cookie-parser でCookieを設定して使用できます。
例:
res.cookie('token', "xyz....", { httpOnly: true });
これでアクセスできます:
app.get('/',function(req, res){
var token = req.cookies.token
});
httpOnly:true
は、Cookieが通常手動またはjavascriptを介してアクセスできないようにし、ブラウザのみがアクセスできるようにすることに注意してください。 ajaxではなく、フォームポストでヘッダーまたはセキュリティトークンを送信する場合、ほとんどの場合、これは安全な方法と見なすことができます。ただし、通常は機密性の高いユーザー関連情報を保存している場合は、データが安全なプロトコル/ sslを介して送信されていることを確認してください。
これが私がパブ/ジェイドでやったことです
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
<form method="POST">
の自然な動作を避けるために、$。ajaxを使用できます。たとえば、送信ボタンにイベントを追加し、POSTリクエストをAJAXとして扱うことができます。