使用PUT-Request发送数据

时间:2017-01-16 16:29:48

标签: javascript jquery

我想通过PUT请求发送数据。

我有一个输入数据要发送的数据。 提交我想发送数据。

我的数据是json格式。

这仅适用于pentest - 所以它必须是PUT请求

我试过了:     

<header>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<script type="javascript">

$(document).ready(function(){

$(#submit).click(){
    var xmlHttp = getNewHTTPObject(); //returns a XMLHttpRequest object
    function chargeURLPut(url) { 
        var mimeType = "text/plain";  
        xmlHttp.open('PUT', url, true);  // true : asynchrone false: synchrone
        xmlHttp.setRequestHeader('Content-Type', mimeType);  
        xmlHttp.send($(#data).val(); 
}}});

</script>
</header>
<body>
  <form>
    Data:<br>
    <input id="data" type="text" name="data" value="Mickey"><br>
    <input id="submit" type="submit" value="Submit">
 </form>
</body>
</html>

但数据会像GET-Parameters一样添加到网址中。在http标题之后我想要像“{date:foo ....}”这样的数据

示例请求:

PUT /foo/bar/v1/users HTTP/1.1
Host: www.foo.bar
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: */*
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Referer: https://www.foo.bar/frontend/
Content-Type: application/json;charset=UTF-8
Authorization: eyJhbGciOiJSUzUxMiJ9.eyJzdW
origin: https://www.foo.bar
Content-Length: 598
Connection: close

{foo: bar, foo:bar}

2 个答案:

答案 0 :(得分:3)

您需要将数据发送为x-www-form-urlencoded

xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

你必须在.click()

中调用已定义的函数
$(#submit).click(){
    var xmlHttp = getNewHTTPObject(); //returns a XMLHttpRequest object
    chargeURLPut('url');

    function chargeURLPut(url) { 
        var mimeType = "text/plain";  
        xmlHttp.open('PUT', url, true);  // true : asynchrone false: synchrone
        xmlHttp.setRequestHeader('Content-Type', mimeType);  
        xmlHttp.send($('#data').val()); 
    }
});

答案 1 :(得分:2)

您可以尝试使用$ .ajax调用。

<html>

<head>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

    <script type="text/javascript">
        $(document).ready(function() {
            $('#submit').click(  function () {
                console.log("click");
                var sendData = $('#data').val();

                $.ajax({
                    url: 'localhost',    //Your api url
                    type: 'PUT',   //type is any HTTP method
                    data: {
                        data: sendData
                    },      //Data as js object
                    success: function () {
                    }
                })
                ;

            });
        });
    </script>
</head>
<body>
<form>
    Data:<br>
    <input id="data" type="text" name="data" value="Mickey"><br>
    <input id="submit" type="button"  value="Submit">
</form>
</body>
</html>

我在网络服务器上测试了这个。它有效。