मैं फॉर्म जमा करने पर POST हेडर में कस्टम फ़ील्ड कैसे सेट कर सकता हूं?
मैं फॉर्म जमा करने पर POST हेडर में कस्टम फ़ील्ड कैसे सेट कर सकता हूं?
जवाबों:
यह नहीं किया जा सकता है - AFAIK।
हालाँकि, आप उदाहरण के लिए उपयोग कर सकते हैं jquery (हालाँकि आप इसे सादे जावास्क्रिप्ट के साथ कर सकते हैं) अपने कस्टम हेडर को जोड़ते समय फ़ॉर्म को भेजने और भेजने (AJAX का उपयोग करके) कर सकते हैं।
Jquery को देखें serialize
जो form-url-encoded
POST के लिए तैयार मूल्यों में एक HTML FORM को बदलता है ।
मेरा सुझाव या तो शामिल करना है
पृष्ठ पर एक कुकी मान सेट करें, और फिर इसे वापस सर्वर साइड पढ़ें।
आप किसी विशिष्ट शीर्ष लेख को सेट करने में सक्षम नहीं होंगे, लेकिन हेडर अनुभाग में मान सुलभ होगा और सामग्री बॉडी नहीं।
से FormData documention:
XMLHttpRequest Level 2 नए FormData इंटरफ़ेस के लिए समर्थन जोड़ता है। फ़ॉर्मडाटा ऑब्जेक्ट्स फॉर्म फ़ील्ड्स और उनके मूल्यों का प्रतिनिधित्व करने वाले कुंजी / मूल्य जोड़े के सेट को आसानी से बनाने का एक तरीका प्रदान करते हैं, जो तब
XMLHttpRequest
send()
विधि का उपयोग करके आसानी से भेजा जा सकता है ।
एक साथ XMLHttpRequest
आप कस्टम हेडर सेट करें और फिर से कर सकते हैं POST
।
वास्तव में ग्राहक पक्ष पर कुकी को बचाने के लिए इसे करने का एक बेहतर तरीका है। तब कुकी स्वचालित रूप से उस विशेष डोमेन के लिए हर पेज हेडर के साथ भेजी जाती है।
नोड-जेएस में, आप कुकी-पार्सर के साथ कुकीज़ सेट और उपयोग कर सकते हैं ।
एक उदाहरण:
res.cookie('token', "xyz....", { httpOnly: true });
अब आप इस तक पहुँच सकते हैं:
app.get('/',function(req, res){
var token = req.cookies.token
});
ध्यान दें कि httpOnly:true
कुकी आमतौर पर मैन्युअल रूप से या जावास्क्रिप्ट के माध्यम से सुलभ नहीं है और केवल ब्राउज़र ही इसे एक्सेस कर सकता है। यदि आप एक फॉर्म पोस्ट के साथ कुछ हेडर या सुरक्षा टोकन भेजना चाहते हैं, न कि अजाक्स के माध्यम से, तो अधिकांश स्थिति में इसे एक सुरक्षित तरीका माना जा सकता है। यद्यपि यह सुनिश्चित करें कि यदि आप कुछ संवेदनशील उपयोगकर्ता से संबंधित जानकारी संग्रहीत कर रहे हैं जो आमतौर पर मामला है, तो डेटा सुरक्षित प्रोटोकॉल / एसएसएल पर भेजा जाता है।
यहाँ मैंने पब / जेड में क्या किया है
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 का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं:
$('#myForm').ajaxSubmit({
headers: {
"foo": "bar"
}
});
के प्राकृतिक व्यवहार से बचने के लिए आप $ .ajax का उपयोग कर सकते हैं <form method="POST">
। उदाहरण के लिए, आप सबमिट बटन पर एक ईवेंट जोड़ सकते हैं और POST अनुरोध को AJAX के रूप में मान सकते हैं।
प्रत्येक ajax अनुरोध में जोड़ने के लिए, मैंने इसका उत्तर यहां दिया है: https://stackoverflow.com/a/58964440/1905708
विशेष रूप से 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
जेएसपी में तत्वों को जोड़ना होगा , जैसे
<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
XmlHttpRequest
आप का उपयोग कर मतलब? या सिर्फ एक सादे HTML फार्म पोस्ट?