回答:
それはできません-私の知る限り。
ただし、たとえばjqueryを使用して(プレーンなJavaScriptで実行できます)、フォームをシリアル化し、カスタムヘッダーを追加しながら(AJAXを使用して)送信できます。
serialize
HTML FORM form-url-encoded
をPOSTの準備ができた値に変更するjquery を見てください。
私の提案はどちらかを含めることです
実際には、クライアント側で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
クッキーは、通常はアクセスできない、手動または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プラグインでJQueryを使用している場合は、以下を使用できます。
$('#myForm').ajaxSubmit({
headers: {
"foo": "bar"
}
});
$ .ajaxを使用して、の自然な動作を回避できます<form method="POST">
。たとえば、送信ボタンにイベントを追加して、POSTリクエストをAJAXとして扱うことができます。
すべてのajaxリクエストに追加するために、ここで答えました:https : //stackoverflow.com/a/58964440/1909708
特定のajaxリクエストに追加するには、次のように実装しました。
var token_value = $("meta[name='_csrf']").attr("content");
var token_header = $("meta[name='_csrf_header']").attr("content");
$.ajax("some-endpoint.do", {
method: "POST",
beforeSend: function(xhr) {
xhr.setRequestHeader(token_header, token_value);
},
data: {form_field: $("#form_field").val()},
success: doSomethingFunction,
dataType: "json"
});
meta
たとえば、JSPに要素を追加する必要があります。
<html>
<head>
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf_header" content="${_csrf.headerName}"/>
<meta name="_csrf" content="${_csrf.token}"/>
フォーム送信(同期)リクエストに追加するために、ここで回答しました:https : //stackoverflow.com/a/58965526/1909708
XmlHttpRequest
あなたが意味ですか?または単なるプレーンHTMLフォームの投稿ですか?