AJAX में GET और POST अनुरोध क्यों हैं क्योंकि यह पृष्ठ URL को किसी भी तरह प्रभावित नहीं करता है? एजेक्स में जीईटी पर संवेदनशील डेटा पास करके यह क्या अंतर करता है क्योंकि डेटा पेज यूआरएल पर प्रतिबिंबित नहीं हो रहा है?AJAX में बनाम पोस्ट बनाओ?
उत्तर
आपको अपनी वेब सेवा से जो आवश्यक है उसके अनुसार आपको उचित HTTP क्रिया का उपयोग करना चाहिए।
जब की तरह एक संग्रह यूआरआई के साथ काम: http://example.com/resources/
प्राप्त: संग्रह के सदस्यों, आगे नेविगेशन के लिए अपने सदस्य यूआरआई के साथ पूरा सूचीबद्ध करें। उदाहरण के लिए, बिक्री के लिए सभी कारों की सूची।
पुट: अर्थ "पूरे संग्रह को दूसरे संग्रह के साथ प्रतिस्थापित करें" के रूप में परिभाषित किया गया है।
POST: संग्रह में एक नई प्रविष्टि बनाएं जहां आईडी संग्रह द्वारा स्वचालित रूप से असाइन की जाती है। बनाई गई आईडी को आमतौर पर इस ऑपरेशन द्वारा लौटाए गए डेटा के हिस्से के रूप में शामिल किया जाता है।
DELETE: अर्थ "संपूर्ण संग्रह को हटाएं" के रूप में परिभाषित किया गया है।
जब की तरह एक सदस्य यूआरआई के साथ काम: http://example.com/resources/7HOU57Y
प्राप्त: संग्रह के लिए एक उपयुक्त MIME प्रकार में व्यक्त की संबोधित सदस्य का प्रतिनिधित्व प्राप्त करें।
पुट: संग्रह के संबोधित सदस्य को अद्यतन करें या निर्दिष्ट आईडी के साथ बनाएं।
POST: संबोधित सदस्य को अपने अधिकार में संग्रह के रूप में मानता है और इसका एक नया अधीनस्थ बनाता है।
DELETE: संग्रह के संबोधित सदस्य को हटाएं।
स्रोत: Wikipedia
ठीक है, जैसा कि जीईटी के लिए है, आपके पास अभी भी यूआरएल लंबाई सीमा है। इसके अलावा, यह काफी कल्पना की जा सकती है कि सर्वर POST का इलाज करता है और अनुरोधों को अलग करता है; इस प्रकार यह निर्दिष्ट करने में सक्षम होना चाहिए कि आप कौन सा अनुरोध कर रहे हैं। उन्हें रखने के लिए
इसके अलावा, आप एप्लिकेशन विकसित करते समय दोनों अनुरोध प्रकारों का उपयोग कर सकते हैं। उनमें से अधिकांश के लिए 'is_ajax' ध्वज पर्याप्त है। ऐसे विकल्प होने के लिए बेहतर नहीं है। –
मैं dnl.vssll के उत्तर को स्वीकार कर रहा हूं क्योंकि HTTP या AJAX द्वारा यूआरएल लंबाई सीमा लागू नहीं की जाती है, तो आप इस उत्तर को http://stackoverflow.com/questions/812925/what-is-the- अधिकतम- संभावित- लम्बाई-ए-क्वेरी-स्ट्रिंग। यह ब्राउज़र/सर्वर द्वारा सीमित है और इसकी सीमितता वास्तव में चर्चा का मुद्दा क्यों है ..चूंकि HTTP टेक्स्ट आधारित है, ब्राउज़र संपूर्ण रूप से HTTP अनुरोध भेजता है .. इसमें क्वेरी स्ट्रिंग भी शामिल है, इसलिए यदि अनुरोध की लंबाई (आदर्श केस मानना) पर कोई सीमा नहीं है तो क्वेरी स्ट्रिंग को सीमित करने में क्या बिंदु है? – Xinus
मैं लंबाई सीमा की रक्षा करने के लिए कोई तर्क नहीं दे रहा था, मैं बस यह कह रहा था कि यह वहां था, और आपको इसे विचार करना होगा, क्योंकि वेब विकास करते समय, आप वास्तव में * ब्राउज़र की उपेक्षा नहीं कर सकते *। लेकिन हे, आपको अपने स्वीकारों को प्रेरित करने की आवश्यकता नहीं है; डीएनएल का जवाब भी एक अच्छा था =) –
दो मुख्य कारणों में:
GET
अनुरोध आकार पर कुछ बहुत प्रतिबंधक सीमाएं हैं;POST
आमतौर पर अधिक जानकारी रखने में सक्षम हैं।बैकएंड
GET
याPOST
की अपेक्षा की जा सकती है, यह कैसे डिजाइन किया गया है इसके आधार पर। अगरकरने की लचीलापन की आवश्यकता है, तो बैकएंड एक की अपेक्षा करता है, याPOST
यदि यह वही है जो इसकी अपेक्षा करता है।
आप आम तौर पर, AJAX स्क्रिप्ट के पैरामीटर भेज यह इन मानकों के आधार पर डेटा देता है। यह एक ऐसे फॉर्म की तरह काम करता है जिसमें विधि = "प्राप्त करें" या विधि = "पोस्ट" है। जीईटी विधि का उपयोग करते समय, पैरामीटर क्वेरी स्ट्रिंग में पास किए जाते हैं। पोस्ट विधि का उपयोग करते समय, पैरामीटर पोस्ट बॉडी में भेजे जाते हैं।
आम तौर पर, यदि आपके पैरामीटर में बहुत कम वर्ण हैं और इसमें संवेदनशील जानकारी नहीं है तो आप उन्हें GET विधि के माध्यम से भेजते हैं। संवेदनशील डेटा (जैसे पासवर्ड) या लंबा टेक्स्ट (उदा। किसी व्यक्ति का 8000 वर्ण लंबा जैव) POST विधि के माध्यम से बेहतर भेजा जाता है।
AFAIK GET और POST विधियां केवल उनके अनुरोध प्रारूप में भिन्न होती हैं, इसलिए मुझे नहीं लगता कि POST GET से अधिक सुरक्षित है। जीईटी असुरक्षित माना जाता है क्योंकि पैरामीटर यूआरएल पर प्रतिबिंबित होते हैं लेकिन AJAX उस समस्या को खत्म करता है। इसके अलावा सभी आधुनिक ब्राउज़र जीईटी अनुरोध के माध्यम से भेजे जा सकने वाले डेटा की मात्रा को सीमित नहीं करते हैं .. .. प्रतिक्रियाओं से मैं केवल संभावित स्पष्टीकरण देख सकता हूं कि AJAX को अच्छी तरह से स्थापित HTTP प्रोटोकॉल के साथ अस्तित्व में डिज़ाइन किया गया है .. जो तार्किक है। – Xinus
@Xinus: आखिरी मैंने सुना है, दोनों ब्राउज़र * और * सर्वर ने अभी भी महत्वपूर्ण यूआरएल लंबाई (उदा।, 'जीईटी') सीमा लगाई है, जैसा कि HTTP स्पेक आईआईआरसी करता है। क्या आप अपने बयान के लिए एक संदर्भ पोस्ट कर सकते हैं कि वे नहीं करते? –
आप सही हैं। लेकिन कारण है कि कुछ लोग जीईटी की तुलना में * थोड़ा * अधिक सुरक्षित होने के लिए पोस्ट पर विचार करते हैं क्योंकि सर्वर पैरा और ब्राउज़र इतिहास सहित यूआरएल के रूप में विभिन्न मानकों में जीईटी पैरामीटर संग्रहीत हो सकते हैं। पोस्ट में यह समस्या नहीं है। –
अन्य ने मुख्य बिंदु (संदर्भ/idempotency, और आकार) को कवर किया है, लेकिन मैं एक और जोड़ना होगा: एन्क्रिप्शन। यदि आप SSL का उपयोग कर रहे हैं और अपने इनपुट तर्क एन्क्रिप्ट करना चाहते हैं, तो आपको POST का उपयोग करने की आवश्यकता है।
यह गलत है। एसएसएल पर स्थानांतरित सभी डेटा एन्क्रिप्टेड है। बनाम पोस्ट प्राप्त करें कोई फर्क नहीं पड़ता। –
मैं जोएल एल से सहमत हूं। पूरा संचार एन्क्रिप्ट किया गया है, इसलिए किस विधि का उपयोग किया गया है? – Xinus
GET
और POST
के बीच एक और अंतर ब्राउज़र में कैशिंग को संभालने का तरीका है। POST
प्रतिक्रिया कभी कैश नहीं किया जाता है। GET
आपके प्रतिक्रिया शीर्षकों में निर्दिष्ट कैशिंग नियमों के आधार पर कैश किया जा सकता है या नहीं भी किया जा सकता है।
जब हम अजाक्स में जीईटी विधि का उपयोग करते हैं, तो केवल फ़ील्ड के मूल्य की सामग्री भेजी जाती है, न कि प्रारूप जिसमें प्रारूप है। उदाहरण के लिए, जीईटी विधि (बिना किसी नई रेखा के चरित्र) के मामले में टेक्स्ट क्षेत्र में सामग्री यूआरएल में अभी जोड़ा गया है। पोस्ट विधि में यह मामला नहीं है।
धन्यवाद .. मैं मुख्य रूप से अजाक्स के साथ GET पद्धति का उपयोग और मुझे नहीं निम्नलिखित को छोड़कर अब तक किसी भी समस्याओं मिल गया है: एक ही का उपयोग कर यदि बुला
इंटरनेट एक्सप्लोरर (फ़ायरफ़ॉक्स और गूगल क्रोम के विपरीत) कैश प्राप्त मूल्य प्राप्त करें।
तो, अजाक्स जीईटी के साथ कुछ अंतराल का उपयोग करके वही परिणाम दिखाए जा सकते हैं जब तक आप प्रत्येक अजाक्स जीईटी के लिए अप्रासंगिक यादृच्छिक संख्या उपयोग के साथ यूआरएल नहीं बदलते।
यह http प्रोटोकॉल के नियमों का सम्मान करने के लिए बस नीचे है।
प्राप्त करें - कॉल बेवकूफ होना चाहिए। इसका मतलब यह है कि यदि आप इसे कई बार कहते हैं तो आपको एक ही परिणाम मिल जाएगा। यह अंतर्निहित डेटा को बदलने का इरादा नहीं है। आप इसे एक खोज बॉक्स आदि के लिए उपयोग कर सकते हैं
पोस्ट - कॉल बेवकूफ नहीं हैं। इसे अंतर्निहित डेटा में परिवर्तन करने की अनुमति है, इसलिए एक निर्माण विधि में उपयोग किया जा सकता है। यदि आप इसे कई बार कहते हैं तो आप कई प्रविष्टियां बनाएंगे।
- 1. jQuery ajax() बनाम प्राप्त()/पोस्ट()
- 2. AJAX पोस्ट
- 3. AJAX पोस्ट
- 4. UIGraphicsBeginImageContext बनाम CGBitmapContext बनाओ आईओएस
- 5. पोस्ट बनाम पोस्ट, जीईटी बनाम
- 6. jQuery ajax स्ट्रिंग पोस्ट
- 7. AJAX पोस्ट विधि
- 8. AJAX पोस्ट विशेष वर्ण
- 9. jQuery AJAX पोस्ट पीएचपी
- 10. jquery AJAX पोस्ट
- 11. jquery AJAX पोस्ट
- 12. कैसे jQuery ajax पोस्ट
- 13. बनाम पोस्ट करें AJAX अनुरोध: कब और कैसे उपयोग करें?
- 14. Jquery: AJAX पोस्ट और एन्कोडिंग
- 15. गूगल स्प्रेडशीट पर AJAX पोस्ट
- 16. PHP/अपाचे/AJAX - पोस्ट सीमा?
- 17. jQuery पोस्ट अनुरोध (नहीं AJAX)
- 18. JQuery $ .ajax पोस्ट वेब सर्वर
- 19. jQuery ajax पोस्ट फ़ाइल क्षेत्र
- 20. django AJAX पोस्ट 403 वर्जित
- 21. isset ($ _ पोस्ट [ 'प्रस्तुत']) बनाम $ _SERVER [ 'REQUEST_METHOD'] == 'पोस्ट'
- 22. बनाम पोस्ट प्राप्त अजाक्स
- 23. AJAX बनाम कर्ल
- 24. jQuery AJAX बनाम UpdatePanel
- 25. AJAX बनाम फ़ॉर्म सबमिशन
- 26. AJAX jQuery.load बनाम jQuery.get
- 27. jQuery AJAX पोस्ट डेटा पोस्ट नहीं कर रहा है
- 28. runOnUiThread बनाम Looper.getMainLooper()। एंड्रॉइड में पोस्ट
- 29. उपयोगकर्ता पोस्ट के लिए AJAX FAV बटन
- 30. Jquery .ajax विधि = "पोस्ट" लेकिन $ _POST खाली
डेटा जीईटी का उपयोग कर पेज यूआरएल में परिलक्षित होता है। एक टीसीपी/आईपी मॉनिटर के साथ क्या हो रहा है या यहां तक कि केवल फ़ायरफ़ॉक्स के लिए हेडर मॉनिटर एड-ऑन के साथ क्या हो रहा है। –
संभावित डुप्लिकेट: http://stackoverflow.com/questions/715335/get-vs-post-in-ajax/ – trante