Как я могу установить настраиваемое поле в заголовке POST при отправке формы?
javascript
html
post
http-post
httprequest
Реза Овляи
источник
источник
XmlHttpRequest
вы имеете в виду? Или просто сообщение в формате HTML?Ответы:
Это невозможно сделать - AFAIK.
Однако вы можете использовать, например, jquery (хотя вы можете сделать это с помощью простого javascript) для сериализации формы и отправки (с использованием AJAX) при добавлении собственного заголовка.
Посмотрите на jquery,
serialize
который изменяет HTML-ФОРМУ наform-url-encoded
значения, готовые для POST.ОБНОВИТЬ
Я предлагаю включить либо
источник
Установите значение cookie на странице, а затем прочтите его на стороне сервера.
Вы не сможете установить конкретный заголовок, но значение будет доступно в разделе заголовков, а не в теле содержимого.
источник
Из документа FormData :
С помощью
XMLHttpRequest
вы можете установить пользовательские заголовки, а затем сделатьPOST
.источник
Фактически, лучший способ сделать это - сохранить куки на стороне клиента. Затем файл 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, если вы храните конфиденциальную информацию, связанную с пользователем, что обычно имеет место.источник
Вот что я сделал в пабе / нефрите
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
источник
Если вы используете JQuery с плагином Form, вы можете использовать:
$('#myForm').ajaxSubmit({ headers: { "foo": "bar" } });
Источник: https://stackoverflow.com/a/31955515/9469069
источник
Вы можете использовать $ .ajax, чтобы избежать естественного поведения
<form method="POST">
. Вы можете, например, добавить событие к кнопке отправки и обрабатывать запрос POST как AJAX.источник
Чтобы добавить в каждый запрос ajax, я ответил на него здесь: https://stackoverflow.com/a/58964440/1909708
Чтобы добавить в конкретные запросы ajax, вот как я реализовал:
var token_value = $("meta[name='_csrf']").attr("content"); var token_header = $("meta[name='_csrf_header']").attr("content"); $.ajax("some-endpoint.do", { method: "POST", beforeSend: function(xhr) { xhr.setRequestHeader(token_header, token_value); }, data: {form_field: $("#form_field").val()}, success: doSomethingFunction, dataType: "json" });
Вы должны добавить
meta
элементы в JSP, например<html> <head> <!-- default header name is X-CSRF-TOKEN --> <meta name="_csrf_header" content="${_csrf.headerName}"/> <meta name="_csrf" content="${_csrf.token}"/>
Чтобы добавить в запрос на отправку формы (синхронный), я ответил на него здесь: https://stackoverflow.com/a/58965526/1909708
источник