HTTP POST रिक्वेस्ट को बुकमार्क या कुछ इसी तरह से स्टोर करें जैसा कि आप GET रिक्वेस्ट के साथ करेंगे


26

आप इस तरह एक GET अनुरोध के साथ एक बुकमार्क स्टोर कर सकते हैं:

http://url.com/service?variable=value

क्या आप Chrome में किसी तरह POST रिक्वेस्ट स्टोर कर सकते हैं? शायद एक प्लगइन के साथ? या शायद फ़ायरफ़ॉक्स में?

विचार यह है कि मैं इसे एक बुकमार्क में संग्रहीत करता हूं और हर बार एक फॉर्म भरने के बजाय इसे जल्दी से फायर करता हूं।



1
अपने ओएस के आधार पर आप उपयोग कर सकते हैं curlकरने के लिए के बजाय एक फ़ाइल से पोस्ट अनुरोध भेज
slhck


FF और Chrome के लिए उपलब्ध Greasemonkey एक्सटेंशन चेकआउट करें।
ott--

जवाबों:


17

विचार यह है कि मैं इसे एक बुकमार्क में संग्रहीत करता हूं और हर बार एक फॉर्म भरने के बजाय इसे जल्दी से फायर करता हूं।

इस प्रयोजन के लिए, निम्नलिखित HTML पृष्ठ करेंगे। यह अधिकांश ब्राउज़रों में काम करना चाहिए।

<html>
    <head>
        <title>getToPost</title>
        <script>
            function getToPost()
            {
                var form = document.getElementsByTagName('form')[0];
                form.style.visibility = 'hidden';
                form.action = document.location.hash.substr(1);
                var search = decodeURIComponent(document.location.search);
                search = search.substr(1).split('&');
                for(var i = 0, j = search.length, input; i < j; i++)
                {
                    input = document.createElement('input');
                    search[i] = search[i].split('=');
                    input.name = search[i][0];
                    input.value = search[i][1];
                    form.appendChild(input);
                }
                form.submit();
            }
        </script>
    </head>
    <body onload="getToPost()">
        <form method="POST"></form>
    </body>
</html>

इसे सहेजें C:\getToPostऔर आप निम्न URL को बुकमार्क कर सकते हैं:

file:///C:/getToPost?name1=value1&name2=value2#http://url.com/service

आप नामों या मूल्यों में अधिकांश वर्णों का शाब्दिक उपयोग कर पाएंगे। निम्नलिखित को हमेशा की तरह एनकोड करें:

#   ->   %23
%   ->   %25
&   ->   %26
=   ->   %3D

यह एक साइट, thx के लिए सीधे काम किया है! हालांकि, AJAX (मुझे लगता है) का उपयोग करने वाली किसी अन्य साइट के लिए यह अभी तक काम नहीं करता है (मैं sth गलत कर सकता हूं); वहाँ है जो अगर / पोस्ट बात AJAX द्वारा नियंत्रित किया जाता है जो बदल जाएगा?
नट्टी के बारे में अखरोट

6

यदि एक क्रॉस ब्राउज़र समाधान की तलाश है जिसे ऐड-ऑन या बाहरी फ़ाइलों पर भरोसा करने की आवश्यकता नहीं है, तो जावास्क्रिप्ट को इस सिंटैक्स का उपयोग करके इसे प्राप्त करने के लिए सीधे बुकमार्क में रखा जा सकता है:

javascript:(function(){ <Your Javascript code goes here> })();

डेनिस के उत्तर के कुछ कोड का वर्णन करने के लिए:

javascript:(function()
{ 
var form = document.getElementsByTagName('form')[0];
form.style.visibility = 'hidden';
form.method = 'post';
form.action = 'https://your.urlgoes.here/build?delay=0sec';
var search = 'name=ENVIRONMENT&value=production&name=DEPLOYTYPE&value=Incremental&name=BRANCH&value=master&statusCode=303&redirectTo=.&json={"parameter": [{"name": "ENVIRONMENT", "value": "production"}, {"name": "DEPLOYTYPE", "value": "Incremental"}, {"name": "BRANCH", "value": "master"}], "statusCode": "303", "redirectTo": "."}&Submit=Build';
search = search.substr(1).split('&');
for(var i = 0, j = search.length, input; i < j; i++)
{
input = document.createElement('input');
search[i] = search[i].split('=');
input.name = search[i][0];
input.value = search[i][1];
form.appendChild(input);
}
 form.submit();}
)();

नकारात्मक पक्ष यह है कि यह एक ही लाइन पर जाना है, क्योंकि एक बुकमार्क सिंगल लाइन है, इसलिए इसके साथ काम करने के लिए थोड़ा दिमाग झुकाया जा सकता है। यह बुकमार्क में ही जाता है:

javascript:(function(){    var form = document.getElementsByTagName('form')[0];   form.style.visibility = 'hidden';   form.method = 'post';   form.action = 'https://your.urlgoes.here/build?delay=0sec';   var search = 'name=ENVIRONMENT&value=production&name=DEPLOYTYPE&value=Incremental&name=BRANCH&value=master&statusCode=303&redirectTo=.&json={"parameter": [{"name": "ENVIRONMENT", "value": "production"}, {"name": "DEPLOYTYPE", "value": "Incremental"}, {"name": "BRANCH", "value": "master"}], "statusCode": "303", "redirectTo": "."}&Submit=Build';   search = search.substr(1).split('&');   for(var i = 0, j = search.length, input; i < j; i++)   {   input = document.createElement('input');   search[i] = search[i].split('=');   input.name = search[i][0];   input.value = search[i][1];   form.appendChild(input);   }    form.submit();   })();

कई स्थानों को आसानी से कुछ और पठनीय और एकल पंक्ति में वापस परिवर्तित करने के लिए उपयोग किया जा सकता है। ऊपर दिए गए उदाहरण में "" को \ n \ n के साथ नोटपैड ++ जैसी किसी चीज़ में बदलकर इसे बहु-पंक्ति में परिवर्तित किया जा सकता है। फिर इसे एक पंक्ति में वापस खोजने के लिए एक खोज करें और \ r \ n के साथ बदलने के लिए इसे "" एकल पंक्ति में परिवर्तित करता है। कि यह थोड़ा कम झुकने का मन बना देता है ...


3

अन्य उत्तरों पर निर्माण!

कोड का डीबग संस्करण, प्लस क्लीनअप और jsbeautifier.org/।

(function() {
    var ThisAction = 'https://your.urlgoes.here/build?delay=0sec';
    /* A little JSON never hurt anyone */
    var ThisPost = {
        name: 'ENVIRONMENT',
        value: 'production',
        name: 'DEPLOYTYPE',
        value: 'Incremental',
        name: 'BRANCH',
        value: 'master',
        statusCode: '303',
        redirectTo: '.',
        json: '{"parameter": [{"name": "ENVIRONMENT", "value": "production"}, {"name": "DEPLOYTYPE", "value": "Incremental"}, {"name": "BRANCH", "value": "master"}], "statusCode": "303", "redirectTo": "."}',
        Submit: 'Build'
    };

    /* Help us locate this function */
    console.trace();
    /* See what we are looking at */
    console.log(document);
    var form = document.getElementsByTagName('form')[0];
    form.style.visibility = 'hidden';
    form.method = 'post';
    form.action = ThisAction;
    for (var key in ThisPost) {
        if (ThisPost.hasOwnProperty(key)) {
            input = document.createElement('input');
            input.name = key;
            input.value = ThisPost[key];
            form.appendChild(input);
        }
    }
    /* form.submit(); */
})();

स्पष्ट रूप से संबंधित html के बिना, टैग नाम 'फॉर्म' वाला तत्व अच्छी तरह से मौजूद नहीं हो सकता है ... और यदि ऐसा होता है तो चीजें बदतर होती हैं। ऊपर यह अच्छी तरह से दर्शाता है। ध्यान दें कि क्रोमियम जावास्क्रिप्ट में: यूआरआई / बुकमार्क एक नए टैब में काम नहीं करते हैं, आपको पहले एक बार नेविगेट करना होगा। यह दस्तावेज़ ऑब्जेक्ट को पॉप्युलेट करता है, लेकिन यहां तक ​​कि सिर्फ एक जावास्क्रिप्ट: अलर्ट ('टी'); कुछ नहीं करता।

मैं निम्नलिखित सुझाव देता हूं।

(function() {
    var ThisAction = 'https://your.urlgoes.here/build?optional=uri_get';
    /* A little JSON never hurt anyone */
    var ThisPost = {
        multiple: 'value',
        key: 'pairs',
        or: 'JSON like so...',
        note: 'the double quotes and last item with NO trailing comma.',
        json: '{parameter: [{name: "stuff"}]}'
    };

    var form = document.createElement('form');
    form.style.visibility = 'hidden';
    form.method = 'post';
    form.action = ThisAction;
    for (var key in ThisPost) {
        if (ThisPost.hasOwnProperty(key)) {
            var input = document.createElement('input');
            input.name = key;
            input.value = ThisPost[key];
            form.appendChild(input);
        }
    }
    document.body.appendChild(form);
    form.submit();
})();

डिबग सेटिंग निकालें, जो अपेक्षित है उसकी बेहतर स्पष्टता के लिए उदाहरण इनपुट को साफ करें। Http://jscompress.com/ या जो भी हो उसे चलाएं और सिंगल लाइन प्राप्त करें।

!function(){var e="https://your.urlgoes.here/build?optional=uri_get",t={multiple:"value",key:"pairs",or:"JSON like so...",note:"the double quotes and last item with NO trailing comma.",json:'{parameter: [{name: "stuff"}]}'},i=document.createElement("form");i.style.visibility="hidden",i.method="post",i.action=e;for(var o in t)if(t.hasOwnProperty(o)){var a=document.createElement("input");a.name=o,a.value=t[o],i.appendChild(a)}document.body.appendChild(i),i.submit()}();

संपादित करें: एक कार्यशील उदाहरण प्रदान करें।

मिनियापोलिस, एमएन में, यूएसए इसका उपयोग फ्री वाईफाई ईएसएसआईडी "यूएसआईडब्ल्यू फ्री वाईफाई" तक पहुंचने के लिए करता है। खाता पंजीकृत करने के लिए https://login.usiwireless.com/mplsfree/logon.php?originalurl=www.google.com/ का उपयोग करने के बाद , वे दुरुपयोग कारणों के लिए क्रेडिट कार्ड चाहते हैं।

स्पष्ट प्रतिस्थापन के साथ, नेटवर्क में प्रवेश करने के लिए इसका उपयोग करें।

javascript:!function(){var e="https://login.usiwireless.com/mplsfree/logon.pl",o={usernameLogin:"USER",passwordLogin:"PASSWORD",originalurl:"www.google.com/"},n=document.createElement("form");n.style.visibility="hidden",n.method="post",n.action=e;for(var i in o)if(o.hasOwnProperty(i)){var t=document.createElement("input");t.name=i,t.value=o[i],n.appendChild(t)}document.body.appendChild(n),n.submit()}();

3

आधुनिक ब्राउज़र सुविधाओं और ES6 का उपयोग करके जावास्क्रिप्ट बुकमार्क दृष्टिकोण का एक छोटा संस्करण:

post('https://example.com', {foo: 'bar'})

function post(url, formData) {
  const makeElem = (tag, props) => Object.assign(document.createElement(tag), props)
  const form = makeElem('form', { action: url, method: 'post', style: 'display: none' })
  for (const [name, value] of Object.entries(formData)) {
    form.appendChild(makeElem('input', { name, value }))
  }
  document.body.appendChild(form)
  form.submit()
}

निम्न को बुकमार्क लक्ष्य के रूप में सेट करें और URL और फ़ॉर्मडटा को उचित रूप से बदलें।

javascript:post('https://example.com',{foo:'bar'});function post(a,b){const c=(e,f)=>Object.assign(document.createElement(e),f),d=c('form',{action:a,method:'post',style:'display: none'});for(const[e,f]of Object.entries(b))d.appendChild(c('input',{name:e,value:f}));document.body.appendChild(d),d.submit()}

0

जब मैंने उसी समस्या का सामना किया, तो मुझे फ़ायरफ़ॉक्स के लिए यह सुंदर ऐड-ऑन मिला: बुकमार्क पोस्ट

अपने बुकमार्क किए गए POST अनुरोध के लिए इसके चार आसान चरणों को बुकमार्क करें (कोई जावास्क्रिप्ट आवश्यक नहीं):

  1. उस पृष्ठ को खोलें, जिस रूप में आप बुकमार्क करना चाहते हैं और "विशिष्ट" तरीके से फ़ॉर्म भरें। अभी तक जमा नहीं करें।
  2. वेब-डेवलपर टूल खोलें -> नेटवर्क विश्लेषण।
  3. अपना फॉर्म जमा करें। सबमिट नेटवर्क विश्लेषण में दिखाई देगा। वहां आप "संपादित करें और फिर से भेजें" का चयन कर सकते हैं और "अनुरोध-निकाय" को कॉपी कर सकते हैं।
  4. प्रपत्र पृष्ठ पर एक बुकमार्क बनाएँ और POSTDATA={YOUR_REQUEST_BODY_HERE}बुकमार्क विवरण के रूप में स्ट्रिंग जोड़ें ।

0

मुझे पता है कि यह एक पुराना सवाल है जो एक स्वीकृत जवाब है। हालांकि यह उत्तर काफी मैनुअल है, इसके लिए उपयोगकर्ता के लिए जावास्क्रिप्ट प्रोग्रामिंग प्रयास की आवश्यकता होती है। अन्य ब्राउज़र एडऑन / एक्सटेंशन / प्लगइन्स सूचीबद्ध हैं, लेकिन वे नवीनतम ब्राउज़र संस्करण के साथ काम नहीं करते हैं या अभी भी काफी मैनुअल हैं। मैंने एक बुकमार्कलेट लिखा था जो एक बुकमार्कलेट उत्पन्न करता है (जिसमें @ rafhinesse के उत्तर से संशोधित कोड शामिल है)। मेरा बुकमार्क यहाँ है: https://github.com/GlenCoakley/createFormSubmittingBookmarklets

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