Как настроить настраиваемое поле в заголовке POST для отправки формы?
Как установить поле заголовка в форме POST?
Ответ 1
Это невозможно сделать - AFAIK.
Однако вы можете использовать, например, jquery (хотя вы можете сделать это с помощью простого javascript) для сериализации формы и отправки (используя AJAX) при добавлении настраиваемого заголовка.
Посмотрите на jquery serialize
, который изменяет HTML FORM в значения form-url-encoded
, готовые к POST.
UPDATE
Мое предложение состоит в том, чтобы включить
- скрытый элемент формы
- параметр строки запроса
Ответ 2
Задайте значение cookie на странице, а затем прочитайте его на стороне сервера.
Вы не сможете установить определенный заголовок, но значение будет доступно в разделе заголовков, а не в теле содержимого.
Ответ 3
Из документа FormData:
XMLHttpRequest Level 2 добавляет поддержку нового интерфейса FormData. Объекты FormData позволяют легко создавать набор пар ключ/значение, представляющих поля формы и их значения, которые затем можно легко отправить с помощью метода
XMLHttpRequest
send()
.
С помощью XMLHttpRequest
вы можете установить пользовательские заголовки, а затем выполнить POST
.
Ответ 4
На самом деле лучший способ сделать это, чтобы сохранить куки на стороне клиента. Затем файл cookie автоматически отправляется с каждым заголовком страницы для этого конкретного домена.
В node-js вы можете устанавливать и использовать файлы cookie с помощью cookie-parser.
пример:
res.cookie('token', "xyz....", { httpOnly: true });
Теперь вы можете получить доступ к этому:
app.get('/',function(req, res){
var token = req.cookies.token
});
Обратите внимание, что httpOnly:true
гарантирует, что файл cookie обычно недоступен вручную или через javascript, и только браузер может получить к нему доступ.
Если вы хотите отправлять некоторые заголовки или токены безопасности с помощью сообщения формы, а не через ajax, в большинстве случаев это можно считать безопасным способом. Хотя убедитесь, что данные отправляются по защищенному протоколу/протоколу ssl, если вы храните некоторую конфиденциальную информацию, относящуюся к пользователю, что обычно имеет место.
Ответ 5
Вот что я сделал в pub/jade
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
Ответ 6
Вы можете использовать $.ajax, чтобы избежать естественного поведения <form method="POST">
.
Например, вы можете добавить событие к кнопке отправки и обработать запрос POST как AJAX.