POST फॉर्म पर हैडर फ़ील्ड कैसे सेट करें?


96

मैं फॉर्म जमा करने पर POST हेडर में कस्टम फ़ील्ड कैसे सेट कर सकता हूं?


1
XmlHttpRequestआप का उपयोग कर मतलब? या सिर्फ एक सादे HTML फार्म पोस्ट?
अलीओस्ताद

नहीं, मैं फॉर्म एक्शन का उपयोग कर रहा हूं: पोस्ट
रेजा ओवेलियाई

जवाबों:


60

यह नहीं किया जा सकता है - AFAIK।

हालाँकि, आप उदाहरण के लिए उपयोग कर सकते हैं jquery (हालाँकि आप इसे सादे जावास्क्रिप्ट के साथ कर सकते हैं) अपने कस्टम हेडर को जोड़ते समय फ़ॉर्म को भेजने और भेजने (AJAX का उपयोग करके) कर सकते हैं।

Jquery को देखें serializeजो form-url-encodedPOST के लिए तैयार मूल्यों में एक HTML FORM को बदलता है ।

अपडेट करें

मेरा सुझाव या तो शामिल करना है

  • एक छिपा हुआ तत्व तत्व
  • एक क्वेरी स्ट्रिंग पैरामीटर

2
मैं इस मामले में ajax का उपयोग नहीं कर सकता। किसी तरह, मैं पोस्ट कर रहा हूं और एक एस्पेक्स पेज पर रीडायरेक्ट कर रहा हूं। रीडायरेक्शन ऑनलाइन पोस्ट से होता है।
रेजा ओवेलियाई

2
मेरा सुझाव 1) एक छिपे हुए फार्म तत्व 2 को शामिल करना है) एक क्वेरी स्ट्रिंग पैरामीटर
अलीओस्ताद

1
क्या आप फ़ाइलों को अनुक्रमित कर सकते हैं? मैंने सोचा: नहीं
Fallenreaper

हाँ, आप बेस 64 स्ट्रिंग्स में फ़ाइलों को अनुक्रमित कर सकते हैं, शायद बहुत बड़ी फ़ाइलों के लिए बहुत ही भद्दा है क्योंकि बेस 64 काफी भारी हो सकता है। लेकिन ऐसा हर क्रमबद्ध तरीके से होता है।
फेल्पे

मैं इसे केवल एक क्वेरी स्ट्रिंग परम के रूप में जोड़ूंगा और यह देखने के लिए कि क्या हेडर या क्वेरी स्ट्रिंग मौजूद है और टोकन है, यह देखने के लिए अपने सर्वर की जांच करें।
जेम्स ११

14

पृष्ठ पर एक कुकी मान सेट करें, और फिर इसे वापस सर्वर साइड पढ़ें।

आप किसी विशिष्ट शीर्ष लेख को सेट करने में सक्षम नहीं होंगे, लेकिन हेडर अनुभाग में मान सुलभ होगा और सामग्री बॉडी नहीं।


3
नोट: यदि आप जो शीर्ष लेख जोड़ना चाहते हैं वह CSRF सुरक्षा के लिए है, तो सुनिश्चित करें कि आप कुकी में उस टोकन को संग्रहीत नहीं करते हैं , या आप CSRF सुरक्षा को हरा देंगे।
जिमोथी

5

से FormData documention:

XMLHttpRequest Level 2 नए FormData इंटरफ़ेस के लिए समर्थन जोड़ता है। फ़ॉर्मडाटा ऑब्जेक्ट्स फॉर्म फ़ील्ड्स और उनके मूल्यों का प्रतिनिधित्व करने वाले कुंजी / मूल्य जोड़े के सेट को आसानी से बनाने का एक तरीका प्रदान करते हैं, जो तब XMLHttpRequest send()विधि का उपयोग करके आसानी से भेजा जा सकता है ।

एक साथ XMLHttpRequestआप कस्टम हेडर सेट करें और फिर से कर सकते हैं POST


2

वास्तव में ग्राहक पक्ष पर कुकी को बचाने के लिए इसे करने का एक बेहतर तरीका है। तब कुकी स्वचालित रूप से उस विशेष डोमेन के लिए हर पेज हेडर के साथ भेजी जाती है।

नोड-जेएस में, आप कुकी-पार्सर के साथ कुकीज़ सेट और उपयोग कर सकते हैं ।

एक उदाहरण:

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

अब आप इस तक पहुँच सकते हैं:

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

ध्यान दें कि httpOnly:trueकुकी आमतौर पर मैन्युअल रूप से या जावास्क्रिप्ट के माध्यम से सुलभ नहीं है और केवल ब्राउज़र ही इसे एक्सेस कर सकता है। यदि आप एक फॉर्म पोस्ट के साथ कुछ हेडर या सुरक्षा टोकन भेजना चाहते हैं, न कि अजाक्स के माध्यम से, तो अधिकांश स्थिति में इसे एक सुरक्षित तरीका माना जा सकता है। यद्यपि यह सुनिश्चित करें कि यदि आप कुछ संवेदनशील उपयोगकर्ता से संबंधित जानकारी संग्रहीत कर रहे हैं जो आमतौर पर मामला है, तो डेटा सुरक्षित प्रोटोकॉल / एसएसएल पर भेजा जाता है।


1

यहाँ मैंने पब / जेड में क्या किया है

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

यदि आप फॉर्म प्लगइन के साथ JQuery का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं:

$('#myForm').ajaxSubmit({
    headers: {
        "foo": "bar"
    }
});

स्रोत: https://stackoverflow.com/a/31955515/9469069


0

के प्राकृतिक व्यवहार से बचने के लिए आप $ .ajax का उपयोग कर सकते हैं <form method="POST">। उदाहरण के लिए, आप सबमिट बटन पर एक ईवेंट जोड़ सकते हैं और POST अनुरोध को AJAX के रूप में मान सकते हैं।


2
मैं इस फ़ॉर्म को किसी aspx पृष्ठ पर पुनर्निर्देशित करने और कुछ डेटा पोस्ट करने के लिए उपयोग करता हूं ।
रेजा ओवेलियाई

मुझे बेहतर समझें: 1) उपयोगकर्ता पोस्ट 2) डेटा की बचत 3) रीडायरेक्ट करें। क्या आप ऐसा करते हैं?
फाबियो बुडा

मैंने एक HTML पृष्ठ (स्रोत) में एक iFrame, एक और HTML पृष्ठ (प्रॉक्सी) की ओर संकेत किया है। प्रॉक्सी पृष्ठ एक फार्म तत्व के माध्यम से कुछ पैरामीटर (नो गेट) पोस्ट करते हैं। फॉर्म सबमिट पर पुनर्निर्देशन और पोस्ट होता है। मैं गंतव्य के रूप में aspx पृष्ठ में पोस्ट किए गए मापदंडों को पुनः प्राप्त करता हूं।
रेजा ओवेलियाई

0

प्रत्येक 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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.