AJAX पोस्ट त्रुटि: असुरक्षित हेडर "कनेक्शन" सेट करने से इनकार कर दिया


101

मेरे पास निम्न कस्टम अजाक्स फ़ंक्शन है जो डेटा को एक PHP फ़ाइल में वापस पोस्ट करता है। हर बार डेटा की पोस्ट के बाद मुझे निम्नलिखित दो त्रुटियां मिलती हैं:

असुरक्षित हेडर "कंटेंट-लेंथ"
सेट करने से इनकार " असुरक्षित हेडर" कनेक्शन सेट करने से इनकार

कोड:

function passposturl(url1, params, obj)
{
    //url1 = url1+"&sid="+Math.random();
    xmlHttp = get_xmlhttp_obj();
    xmlHttp.loadflag = obj;
    xmlHttp.open("POST", url1, true);
    //alert(url1);
    //alert(params);
    //alert(obj);
    //alert(params.length);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", params.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.onreadystatechange = function ()
    {
        stateChanged(xmlHttp);
    };
    xmlHttp.send(params);
 }

मैं क्या गलत कर रहा हूं?



हे जोय। इससे पहले कि मैं यहां पोस्ट करता, मैं इससे गुजरता। मुझे अभी भी नहीं मिल रहा है। मुझे बस इतना करना है कि setRequestHeader लाइनों पर टिप्पणी करें?
स्नाइपर

जवाबों:


166

इन दो पंक्तियों को निकालें:

xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");

XMLHttpRequest को इन हेडर को सेट करने की अनुमति नहीं है, वे ब्राउज़र द्वारा स्वचालित रूप से सेट किए जा रहे हैं। कारण यह है कि इन हेडर में हेरफेर करके आप सर्वर को उसी कनेक्शन के माध्यम से दूसरा अनुरोध स्वीकार करने में सक्षम कर सकते हैं, जो सामान्य सुरक्षा जांच से नहीं गुजरेगा - जो ब्राउज़र में सुरक्षा भेद्यता होगी।


5
"भेद्यता" क्या Connection: closeकारण है? यदि आप जानते हैं कि एक अनुरोध में लंबा समय लगेगा, तो यह अनुरोध करना संभव होना चाहिए कि यह लगातार कनेक्शन को न बांधे। ब्राउज़र्स अनुरोध अनुरोध का समर्थन नहीं करते हैं, इसलिए यदि सामान्य अनुरोध से पहले लंबे समय तक चलने वाला अनुरोध आता है, तो यह पूर्ण रखने के समय के लिए 2 अनुरोध को अवरुद्ध कर देगा। यदि लंबे समय तक चलने वाला अनुरोध "कनेक्शन: बंद" का उपयोग कर सकता है, तो यह अनुरोध करना संभव होगा कि यह लगातार कनेक्शन और कारण (उदाहरण के लिए) एक अनावश्यक 5 सेकंड की देरी (जहां 5 सेकंड रखने के लिए जीवित समय है) को टाई न करें।
doug65536

3
@ doug65536: ब्राउज़र्स हेडर वैल्यूज़ को मान्य नहीं करते हैं, वे केवल हेडर सेट करने से मना कर देते हैं जिसे आपको गड़बड़ नहीं करना चाहिए।
व्लादिमीर पालंट

हाय व्लादिमीर, मैं अपना पैरामीटर कैसे पास करूँ अगर उन 2 लाइनों को हटा दिया जाए
कोडरइरैन जूल

@anunixercoder: आप नहीं। ये दोनों हेडर स्वचालित रूप से ब्राउज़र द्वारा सेट किए जाते हैं और इन्हें बदला नहीं जा सकता।
व्लादिमीर पालंट

पुन: "यह अनुरोध करना संभव होना चाहिए कि यह लगातार कनेक्शन को न बांधे।" - यह क्या नहीं है। कनेक्शन: करीब | कर देता है।
एरिकला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.