How do you force a web browser to use POST when getting a url?

前端 未结 11 2649
别跟我提以往
别跟我提以往 2020-12-14 00:16

How do you force a web browser to use POST when getting a url?

11条回答
  •  一个人的身影
    2020-12-14 00:28

    The above submitAsPost() function is a good and elegant solution but it has a problem - if the URL is too long some browsers (including Firefox and IE) will return an error. Since many of us use POST in order to bypass this very limitation, I suggest this solution:

    // 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);
    }
    

    Tested with Firefox, Chrome and IE.

提交回复
热议问题