it-swarm.com.ru

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

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

72
Reza Owliaei

Это не может быть сделано - AFAIK.

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

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

Обновление

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

  • скрытый элемент формы 
  • параметр строки запроса
50
Aliostad

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

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

13
Chris Hynes

От FormData документация: 

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

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

3
Majid

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

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

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

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

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

2
Ramesh Pareek

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

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
1
Steve

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

0
Fabio Buda