2009-10-30 13 views
31

यूआरएल प्राप्त करते समय POST का उपयोग करने के लिए आप एक वेब ब्राउज़र को कैसे मजबूर करते हैं?यूआरएल प्राप्त करते समय POST का उपयोग करने के लिए आप किसी वेब ब्राउज़र को कैसे मजबूर करते हैं?

+2

क्या आपका मतलब किसी फॉर्म या href से है? –

+0

आप वास्तव में इसके साथ क्या करने की कोशिश कर रहे हैं? एक "पोस्ट" आमतौर पर क्लाइंट से सर्वर पर कुछ डेटा भेजने के लिए प्रयोग किया जाता है। एक "प्राप्त करें" डेटा पुनर्प्राप्त करना है .. लेकिन ब्राउज़र मूल रूप से कुकीज़, ब्राउज़र जानकारी इत्यादि जैसे कुछ डेटा भेजता है – NotMe

+0

मुझे एक ही समस्या है जो मैं xmlhttprequest का उपयोग करके यूआरएल पर पोस्ट करता हूं और यह – zardilior

उत्तर

29

एक HTML फार्म का है कि विधि के रूप में पद निर्दिष्ट करता है का उपयोग करें:

<form method="post" action="/my/url/"> 
    ... 
    <input type="submit" name="submit" value="Submit using POST" /> 
</form> 

यदि आप यह एक कड़ी (अनुशंसित नहीं) के रूप में ऐसा करने के लिए था, तो आप एक onclick हैंडलर गतिशील रूप से एक फार्म का निर्माण हो सकता है और इसे भेजें।

<script type="text/javascript"> 
function submitAsPost(url) { 
    var postForm = document.createElement('form'); 
    postForm.action = url; 
    postForm.method = 'post'; 
    var bodyTag = document.getElementsByTagName('body')[0]; 
    bodyTag.appendChild(postForm); 
    postForm.submit(); 
} 
</script> 
<a href="/my/url" onclick="submitAsPost(this.href); return false;">this is my post link</a> 

आप सर्वर साइड पर यह लागू करने के लिए की जरूरत है, तो आप HTTP विधि की जाँच करनी चाहिए और अगर यह पोस्ट के बराबर नहीं है, एक HTTP 405 response code (method not allowed) वापस ब्राउज़र और बाहर निकलने के लिए भेज देते हैं। वास्तव में आपको लगता है कि कैसे लागू आदि अपने प्रोग्रामिंग भाषा/ढांचे पर निर्भर करेगा,

+0

प्राप्त करता है यह एक पुराना जवाब है, लेकिन क्या मुझे पता चलेगा कि आप एक लिंक जमा करने के लिए एक अनुशंसा नहीं करते हैं कि क्यों 'अनुशंसित नहीं है'? –

+2

@RosdiKasim मुझे पता है कि यह एक पुरानी टिप्पणी है लेकिन इसकी अनुशंसा नहीं की जाती है क्योंकि यह विश्वव्यापी वेब के अर्थशास्त्र को तोड़ देती है। लिंक होने की उम्मीद है [idempotent] (https://en.wikipedia.org/wiki/Idempotence) अनुरोध प्राप्त करें। उन्हें POST बनाना उन्हें उम्मीद का उल्लंघन करता है। वेब को तोड़ने के तरीकों में से एक खोज इंजन क्रॉलर्स के लिए है जो फ़ॉर्म सबमिट नहीं करने का प्रयास करते हैं, इसलिए वे डेटाबेस को अपडेट नहीं करते हैं, आदि – Asaph

19
<form method="post"> 

आप एक URL हो रही है, तो आप इसे प्राप्त कर रहे हैं, यह पोस्टिंग नहीं। आप निश्चित रूप से किसी ब्राउज़र को अपने स्थान पट्टी के माध्यम से POST अनुरोध जारी करने का कारण नहीं बना सकते हैं।

+1

यूआरएल लोकेशन बार में पोस्ट करने का कोई तरीका नहीं है? –

+36

क्या आप मुझ पर विश्वास करेंगे यदि मैं इसे दो बार कहता हूं? –

+2

@ डैनियल: मैंने एक लिंक से एक पोस्ट फॉर्म जमा करने का एक हैकी तरीका प्रदान करने के लिए अपना जवाब अपडेट किया। – Asaph

4

यदि आप कुछ परीक्षण करने का प्रयास कर रहे हैं, तो मैं आपके http अनुरोधों को तैयार करने के लिए Fiddler का उपयोग करने का सुझाव दूंगा। यह आपको क्रिया क्रिया (GET, POST, PUT, DELETE, आदि) के साथ-साथ अनुरोध सामग्री निर्दिष्ट करने की अनुमति देगा। यदि आप किसी लिंक से एक बहुत ही विशिष्ट अनुरोध का परीक्षण करने की कोशिश कर रहे हैं लेकिन POST के साथ, तो आप अपने ब्राउजर के अनुरोधों की निगरानी कर सकते हैं और केवल संशोधित POST कार्रवाई के साथ इसे फिर से जारी कर सकते हैं।

4

आप पोस्ट हेडर के साथ यूआरएल भेजने के लिए किसी भी वेब ब्राउज़र को मजबूर नहीं कर सकते हैं। लेकिन एक पोस्ट अनुरोध यूआरएल परीक्षण करने के लिए, मेरा सुझाव कर सकते हैं chrome और mozilla

1

की "POSTER" विस्तार मैं जानता हूँ कि इस सवाल का वर्ष है, लेकिन कोई इस उपयोगी मिल सकता है। आप URL पर पोस्ट करने के लिए curl (http://curl.haxx.se/) जैसे कमांड लाइन टूल का उपयोग कर सकते हैं।

उदाहरण:

curl -v --basic --user username:password --request POST "http://www.theurltopostto.com" 
2

ऊपर submitAsPost() फ़ंक्शन एक अच्छा और सुरुचिपूर्ण समाधान है, लेकिन यह एक समस्या है - अगर URL बहुत बड़ा कुछ ब्राउज़रों (Firefox और IE सहित) है एक त्रुटि वापस आ जाएगी।

// submit a URL using post 
function submitAsPost(url) { 
    var bodyTag = document.getElementsByTagName('body')[0]; 
    var postForm = document.createElement('form'); 
    bodyTag.appendChild(postForm); 
    postForm.method = 'POST'; 

    var serverAndParams = url.split("?"); 
    postForm.action = serverAndParams[0]; 
    var params = null; 
    try 
    { 
     var paramsAndHash = serverAndParams[1].split("#"); 
     params = paramsAndHash[0]; 
     var attrList = params.split("&"); 
     for (var i = 0; i < attrList.length; i++) 
     { 
     try 
     { 
      var keyValue = attrList[i].split("="); 
      var el = document.createElement('input'); 
      el.type="hidden"; 
      el.name=keyValue[0]; 
      var value = keyValue[1]; 
      value = value.replace(/\+/g, ' '); 
      el.value=decodeURIComponent(value); 
      postForm.appendChild(el); 
     } 
     catch(error){} 
     } 
    } 
    catch(error){} 

    postForm.submit(); 
    bodyTag.removeChild(postForm); 
} 

फायरफॉक्स, क्रोम और IE के साथ परीक्षण किया गया: चूंकि हम में से कई इस बहुत सीमा से बचने के लिए पोस्ट का उपयोग करें, मैं इस समाधान सुझाव देते हैं।

1

यह गेम में थोड़ा देर हो चुकी है लेकिन मैं इस पर दौड़ गया और पाया कि एचटीएमएल 5 ने कुछ बदलाव किए हैं। आप फॉर्ममेड जोड़ने के लिए इनपुट टैग का उपयोग कर सकते हैं (इस प्रकार पोस्ट का चयन)। यह मेरे लिए काम किया।

देखें: http://www.w3schools.com/tags/att_input_formmethod.asp

2

आप परीक्षण करने के लिए एक उपकरण का उपयोग कर सकते हैं। मैं हमेशा आपके जैसा ही सवाल पूछ रहा हूं। ऑनलाइन उपलब्ध कुछ औजार उपलब्ध हैं। यहां वह टूल है जिसका मैं उपयोग करता हूं: http://www.hurl.it/

9

मुझे आपके प्रश्न से एक एहसास है कि आप ब्राउज़र के पता बार में एक पोस्ट अनुरोध भेजने की उम्मीद कर रहे थे।

बस यूआरएल को 'एक्शन' के मान को स्वैप करने के लिए पता बार में निम्न टाइप करें।

data:text/html,<body onload="document.body.firstChild.submit()"><form method="post" action="http://stackoverflow.com"> 

यह अवैध एचटीएमएल है, लेकिन ब्राउज़र की (कम से कम सभी लोगों को मैं अब तक में यह परीक्षण किया है) पता है कि तुम क्या मतलब है, और मैं इसे मैं कर सकता के रूप में के रूप में कम रखने के लिए करना चाहता था।

यदि आप मूल्य पोस्ट करना चाहते हैं, तो जितना चाहें उतने इनपुट जोड़ें, जो भी आप चाहें, प्रत्येक इनपुट में नाम और मूल्य स्वैप करें।

  • अपने इतिहास
  • अपनी पता बार
  • आपके ब्राउज़र का स्वत: पूर्ण:

    <input value="[email protected]" name="email"> 
    <input value="passwordsavedinhistory" name="password"> 
    

    ऐसा नहीं है कि संवेदनशील जानकारी आपके द्वारा पोस्ट में दिखाए जाने वाले ध्यान देना महत्वपूर्ण है।

  • संभवतः अन्य साइटों पर उसी टैब से जाएँ
  • शायद अन्य बातों के बहुत सारे भी

यह एक बहुत बुरी तरह से एक पोस्ट अनुरोध भेजने के लिए है, और सभी अन्य उत्तर कहीं बेहतर हैं, लेकिन यह है अभी भी शांत है कि आप इसे कर सकते हैं।

0

तुम क्या कर की समस्या थी हैं:

request.open('POST',url,true); 
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
request.send("data="+JSON.stringify(data)); 

और देव उपकरण में आप अभी भी se यह एक प्राप्त कर रहा है तो इसका मतलब है कि आपके url निम्न स्वरूप में है:

मतलब यह होना चाहिए:

http://example.com/folder/

यह एक बहुत ही विचित्र त्रुटि शायद आपके प्रश्न से संबंधित नहीं है लेकिन मेरे पास यह कई बार था और यह वहां से बाहर होना चाहिए क्योंकि यह गंभीर रूप से खतरनाक दिखता है। यह तब हुआ जब उबंटू 14.04 पर अपाचे 2 सर्वर का उपयोग करते हुए, अधिक कॉन्फ़िगरेशन के साथ।

संबंधित मुद्दे

 संबंधित मुद्दे