如何在提交表单时在POST标题中设置自定义字段?
它无法做到 - AFAIK。
但是,您可以使用例如jquery(尽管您可以使用普通的javascript)来序列化表单并在添加自定义标头时发送(使用AJAX)。
查看jquery serialize
,它将HTML FORM更改为准备POST的form-url-encoded
值。
我的建议是包括其中之一
在页面上设置cookie值,然后将其读回服务器端。
您将无法设置特定标头,但可以在标题部分访问该值,而不是内容正文。
来自qazxsw poi文件:
XMLHttpRequest Level 2增加了对新FormData接口的支持。 FormData对象提供了一种方法,可以轻松构造一组表示表单字段及其值的键/值对,然后可以使用FormData
XMLHttpRequest
方法轻松发送。
使用send()
,您可以设置自定义标题,然后执行XMLHttpRequest
。
事实上,更好的方法是在客户端保存cookie。然后,cookie将自动与该特定域的每个页眉一起发送。
在node-js中,您可以使用POST
设置和使用cookie。
一个例子:
cookie-parser
现在您可以访问:
res.cookie('token', "xyz....", { httpOnly: true });
请注意,app.get('/',function(req, res){
var token = req.cookies.token
});
确保通常无法手动或通过javascript访问cookie,只有浏览器才能访问它。如果您想使用表单发送一些标题或安全性令牌,而不是通过ajax,在大多数情况下,这可以被认为是一种安全的方式。虽然如果要存储一些敏感的用户相关信息(通常是这种情况),请确保通过安全协议/ ssl发送数据。
这是我在pub / jade中所做的
httpOnly:true
您可以使用$ .ajax来避免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
的自然行为。例如,您可以向提交按钮添加事件,并将POST请求视为AJAX。