Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> HTML

HTML Form method एट्रिब्यूट: GET vs POST


HTML Form method एट्रिब्यूट परिभाषित करता है कि फॉर्म डेटा सर्वर को कैसे भेजा जाए: GET (URL पैरामीटर्स के रूप में) या POST (HTTP रिक्वेस्ट बॉडी में)। यह सुरक्षा, डेटा लंबाई, कैशिंग, और बुकमार्केबिलिटी को प्रभावित करता है।

सिंटैक्स (Syntax)

<form method="get | post"></form>
  • get (डिफ़ॉल्ट): फॉर्म डेटा URL क्वेरी स्ट्रिंग में जोड़ा जाता है (?name=value&...)।
  • post: फॉर्म डेटा HTTP रिक्वेस्ट बॉडी में भेजा जाता है।

उदाहरण (Example)

GET और POST दोनों मोड्स को दर्शाने वाला फॉर्म।

<!DOCTYPE html>
<html>
<head>
  <style>
    body {
      color: #000;
      height: 100vh;
      background: linear-gradient(62deg, #FBAB7E 0%, #F7CE68 100%) no-repeat;
      text-align: center;
      font-family: Arial, sans-serif;
    }
    input {
      width: 315px;
      display: block;
      margin: 1rem auto;
      border: 2px solid #fff;
      padding: 12px;
      background: transparent;
      border-radius: 20px;
      outline: none;
      font-size: 1rem;
    }
    input:focus { border-color: #db133a; }
    ::placeholder { color: #666; }
    .btn {
      background: #db133a;
      border: none;
      height: 2.5rem;
      border-radius: 20px;
      width: 330px;
      display: block;
      color: #fff;
      outline: none;
      cursor: pointer;
      margin: 1rem auto;
      font-size: 1rem;
      transition: background 0.3s;
    }
    .btn:hover { background: #b01030; }
    .method-selector {
      display: flex;
      justify-content: center;
      gap: 1rem;
      margin: 1.5rem 0;
      flex-wrap: wrap;
    }
    .method-btn {
      padding: 10px 24px;
      border: 2px solid #fff;
      background: transparent;
      color: #fff;
      border-radius: 20px;
      cursor: pointer;
      font-size: 1rem;
      transition: all 0.3s;
    }
    .method-btn.active, .method-btn:hover {
      background: #fff;
      color: #db133a;
    }
    .result-box {
      background: rgba(0,0,0,0.3);
      color: #fff;
      padding: 1.5rem;
      border-radius: 10px;
      margin: 1rem auto;
      max-width: 500px;
      text-align: left;
      font-family: monospace;
      white-space: pre-wrap;
      min-height: 100px;
    }
    .url-display {
      word-break: break-all;
      background: rgba(255,255,255,0.1);
      padding: 1rem;
      border-radius: 8px;
      margin: 1rem 0;
    }
  </style>
</head>
<body>
  <h1>HTML Form method एट्रिब्यूट डेमो</h1>
  
  <div class="method-selector">
    <button type="button" class="method-btn active" id="btnGet" onclick="setMethod('get')">GET</button>
    <button type="button" class="method-btn" id="btnPost" onclick="setMethod('post')">POST</button>
  </div>
  
  <form id="demoForm" action="/action_page.php" method="get">
    <input type="text" name="firstname" placeholder="पहला नाम दर्ज करें" required>
    <input type="text" name="lastname" placeholder="अंतिम नाम दर्ज करें" required>
    <input type="email" name="email" placeholder="ईमेल दर्ज करें" required>
    <input type="submit" value="सबमिट करें" class="btn">
  </form>
  
  <div class="result-box" id="result">
    फॉर्म सबमिट करें परिणाम देखने के लिए...
  </div>
  
  <div class="url-display" id="urlDisplay"></div>

  <script>
    const form = document.getElementById('demoForm');
    const result = document.getElementById('result');
    const urlDisplay = document.getElementById('urlDisplay');
    const btnGet = document.getElementById('btnGet');
    const btnPost = document.getElementById('btnPost');
    let currentMethod = 'get';
    
    function setMethod(method) {
      currentMethod = method;
      form.method = method;
      btnGet.classList.toggle('active', method === 'get');
      btnPost.classList.toggle('active', method === 'post');
      result.textContent = `मेथड बदला गया: ${method.toUpperCase()}\nफॉर्म सबमिट करें परिणाम देखने के लिए...`;
      urlDisplay.innerHTML = '';
    }
    
    form.addEventListener('submit', function(e) {
      e.preventDefault();
      
      const formData = new FormData(form);
      const params = new URLSearchParams(formData);
      const queryString = params.toString();
      
      if (currentMethod === 'get') {
        const fullUrl = `${form.action}?${queryString}`;
        result.textContent = `GET अनुरोध अनुकरण:\n${fullUrl}`;
        urlDisplay.innerHTML = `निर्मित URL:
${fullUrl}`; } else { // POST के लिए बॉडी दिखाएं let bodyContent = ''; for (const [key, value] of formData.entries()) { bodyContent += `${key}: ${value}\n`; } result.textContent = `POST अनुरोध अनुकरण:\nURL: ${form.action}\n\nरिक्वेस्ट बॉडी:\n${bodyContent}`; urlDisplay.innerHTML = `रिक्वेस्ट बॉडी (application/x-www-form-urlencoded):
${queryString}`; } // ब्राउज़र के नेटिव सबमिशन को भी दिखाएं (नए टैब में) // form.submit(); // अनकमेंट करके वास्तविक सबमिशन टेस्ट करें }); </script> </body> </html>

आउटपुट (Output)

GET मोड में फॉर्म सबमिशन - URL में पैरामीटर्स दिखाई देते हैं:

HTML Form method एट्रिब्यूट: GET vs POST

POST मोड में फॉर्म सबमिशन - डेटा रिक्वेस्ट बॉडी में जाता है:

HTML Form method एट्रिब्यूट: GET vs POST

GET vs POST: विस्तृत तुलना

विशेषता GET POST
डेटा स्थान URL क्वेरी स्ट्रिंग HTTP रिक्वेस्ट बॉडी
दृश्यता ब्राउज़र एड्रेस बार में दिखता है एड्रेस बार में नहीं दिखता
लंबाई सीमा ~2048 वर्ण (ब्राउज़र/सर्वर सीमा) कोई व्यावहारिक सीमा नहीं (सर्वर कॉन्फिग पर निर्भर)
कैशिंग कैश किया जा सकता है कैश नहीं किया जाता (डिफ़ॉल्ट)
ब्राउज़र हिस्ट्री पैरामीटर्स के साथ सेव होता है पैरामीटर्स के बिना सेव होता है
बुकमार्केबल हाँ नहीं
पुनः सबमिशन रिफ्रेश पर सुरक्षित (आइडेम्पोटेंट) ब्राउज़र चेतावनी देता है "फिर से सबमिट करें?"
सुरक्षा कम (लॉग्स, हिस्ट्री, शेयर में दिखता है) बेहतर (बॉडी में, लेकिन HTTPS आवश्यक)
एन्कोडिंग application/x-www-form-urlencoded application/x-www-form-urlencoded या multipart/form-data
फाइल अपलोड संभव नहीं संभव (multipart/form-data के साथ)

कब उपयोग करें

GET का उपयोग करें जब:

  • डेटा केवल पढ़ने/खोजने के लिए है (आइडेम्पोटेंट ऑपरेशन)।
  • परिणाम बुकमार्केबल/शेयर करने योग्य होना चाहिए (खोज, फिल्टर, पेजिनेशन)।
  • डेटा छोटा और असंवेदनशील है।
  • कैशिंग वांछित है।

POST का उपयोग करें जब:

  • डेटा सर्वर स्थिति बदलता है (बनाना, अपडेट करना, हटाना)।
  • संवेदनशील डेटा (पासवर्ड, व्यक्तिगत जानकारी, भुगतान)।
  • बड़ी मात्रा में डेटा या फाइल अपलोड।
  • डुप्लिकेट सबमिशन रोका जाना चाहिए (नॉन-आइडेम्पोटेंट)।

सुरक्षा विचार

  • HTTPS अनिवार्य: दोनों मेथड्स के लिए, संवेदनशील डेटा के लिए HTTPS आवश्यक है।
  • GET लॉग्स में: URL सर्वर लॉग्स, प्रॉक्सी लॉग्स, ब्राउज़र हिस्ट्री में संग्रहीत होते हैं।
  • CSRF सुरक्षा: POST फॉर्म्स के लिए CSRF टोकन का उपयोग करें।
  • पासवर्ड कभी GET में नहीं: पासवर्ड हमेशा POST के माध्यम से भेजें।

ब्राउज़र समर्थन

सभी ब्राउज़र (सभी संस्करण) दोनों मेथड्स का पूर्ण समर्थन करते हैं।


  1. HTML value एट्रिब्यूट HTML value एट्रिब्यूट

    परिचय HTML value एट्रिब्यूट HTML दस्तावेज़ में एक HTML एलिमेंट के प्रारंभिक मान को परिभाषित करता है। इसे button, input, meter, li, option, progress और param HTML एलिमेंट्स पर लागू किया जा सकता है। सिंटैक्स <tagname value=text></tagname> उदाहरण <!DOCTYPE html> <html> <sty

  1. HTML novalidate एट्रिब्यूट: फॉर्म वैलिडेशन बायपास करें HTML novalidate एट्रिब्यूट: फॉर्म वैलिडेशन बायपास करें

    HTML novalidate एट्रिब्यूट एक बूलियन एट्रिब्यूट है जो <form> एलिमेंट पर लगाया जाता है। जब यह मौजूद होता है, तो फॉर्म सबमिट करते समय ब्राउज़र की अंतर्निहित HTML5 वैलिडेशन (required, pattern, type, min/max, आदि) छोड़ दी जाती है। यह कस्टम वैलिडेशन लॉजिक लागू करने या सर्वर-साइड वैलिडेशन पर भरोसा

  1. HTML फॉर्म action एट्रिब्यूट HTML फॉर्म action एट्रिब्यूट

    HTML फॉर्म action एट्रिब्यूट परिभाषित करता है कि जब HTML दस्तावेज़ में एक फॉर्म सबमिट किया जाता है तो फॉर्म डेटा कहां भेजा जाए।सिंटैक्सनिम्नलिखित सिंटैक्स है:<form action=”URL”></form>आइए HTML फॉर्म action एट्रिब्यूट का एक उदाहरण देखें:उदाहरण<!DOCTYPE html> <html>