Как установить поле заголовка в форме 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.