Как установить поле заголовка на POST форме? - PullRequest
79 голосов
/ 01 марта 2012

Как настроить поле в заголовке POST при отправке формы?

Ответы [ 6 ]

53 голосов
/ 01 марта 2012

Это невозможно сделать - AFAIK.

Однако вы можете использовать, например, jquery (хотя вы можете сделать это с простым javascript), чтобы сериализовать форму и отправлять (используя AJAX) при добавлении собственного заголовка.

Посмотрите на jquery serialize, который меняет HTML-форму на form-url-encoded значения, готовые для POST.

UPDATE

Я предлагаю включить либо

  • скрытый элемент формы
  • параметр строки запроса
13 голосов
/ 21 августа 2013

Установите значение cookie на странице, а затем прочитайте его на стороне сервера.

Вы не сможете установить определенный заголовок, но значение будет доступно в разделе заголовков, а не в теле содержимого.

3 голосов
/ 01 октября 2015

Из FormData документирование:

XMLHttpRequest Уровень 2 добавляет поддержку нового интерфейса FormData.Объекты FormData позволяют легко создавать набор пар ключ / значение, представляющих поля формы и их значения, которые затем можно легко отправить с помощью метода XMLHttpRequest send().

С помощью XMLHttpRequest вы можете установить пользовательские заголовки, а затем сделать POST.

2 голосов
/ 01 марта 2018

На самом деле лучший способ сделать это, чтобы сохранить куки на стороне клиента.Затем файл cookie автоматически отправляется с каждым заголовком страницы для этого конкретного домена.например, в node-js вы можете установить cookie следующим образом:

res.cookie('token', "xyz....", { httpOnly: true });

Теперь вы можете получить доступ к этому:

app.get('/',function(req, res){
 var token = req.cookies.token
});

Обратите внимание, что httpOnly:true гарантирует, что кукиобычно недоступен вручную или через javascript, и только браузер может получить к нему доступ.Если вы хотите отправлять некоторые заголовки или токены безопасности с помощью сообщения формы, а не через ajax, в большинстве случаев это можно считать безопасным способом.Хотя убедитесь, что данные отправляются по защищенному протоколу / протоколу ssl, если вы храните некоторую конфиденциальную информацию, относящуюся к пользователю, что обычно имеет место.

1 голос
/ 23 марта 2017

Вот что я сделал в пабе / нефрите

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
0 голосов
/ 01 марта 2012

Вы можете использовать $ .ajax, чтобы избежать естественного поведения <form method="POST">.Например, вы можете добавить событие к кнопке отправки и обработать запрос POST как AJAX.

...