Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to calculate Content-Length in JavaScript

function LikesDislikes () {

    $.ajax({
        url: 'http://gdata.youtube.com/feeds/api/videos/keDZXXDxK1c/ratings',
        type:"POST",
        data: '<?xml version="1.0" encoding="UTF-8"?>
            <entry xmlns="http://www.w3.org/2005/Atom"
                   xmlns:yt="http://gdata.youtube.com/schemas/2007">
                <yt:rating value="like"/>
            </entry>',
        headers: {
            "Content-Type":"application/atom+xml",
            "Content-Length":,
            "Authorization":"Bearer ya29.AHES6ZQ59RrQgujZmIjssBdYlwwLVrpCodnirdLROi7-g7U",
            "X-GData-Key":"key=AIzaSyAPrtP2Tq4m5WVInCvCWptVAKPhQ4SQNZA",
            "GData-Version":"2"
        },
        // Content-Type:"application/atom+xml",
        error: function() { alert("No data found."); },
        // contentType: "text/xml",
        success: function (response) {
            alert('response:' + response);
        }
   });

}

How can I calculate the Content-Length in the above code?

like image 722
user2595123 Avatar asked Jul 20 '13 13:07

user2595123


2 Answers

As said in specs

The Content-Length entity-header field indicates the size of the entity-body, in decimal number of OCTETs

Please look as this question String length in bytes in JavaScript.

Basically if your data contains only ASCII characters everything should be quite easy

function LikesDislikes () {

    var data = '<?xml version="1.0" encoding="UTF-8"?>
    <entry xmlns="http://www.w3.org/2005/Atom"
           xmlns:yt="http://gdata.youtube.com/schemas/2007">
        <yt:rating value="like"/>
    </entry>';

    $.ajax({
        url: 'http://gdata.youtube.com/feeds/api/videos/keDZXXDxK1c/ratings',
        type:"POST",
        data: data,
        headers: {
            "Content-Type":"application/atom+xml",
            "Content-Length": data.length,
            "Authorization":"Bearer ya29.AHES6ZQ59RrQgujZmIjssBdYlwwLVrpCodnirdLROi7-g7U",
            "X-GData-Key":"key=AIzaSyAPrtP2Tq4m5WVInCvCWptVAKPhQ4SQNZA",
            "GData-Version":"2"
        },
        // Content-Type:"application/atom+xml",
        error: function() { alert("No data found."); },
        // contentType: "text/xml",
        success: function (response) {
            alert('response:' + response);
        }
    });
}
like image 187
twil Avatar answered Sep 22 '22 03:09

twil


The Content-Length entity header is indicating the size of the entity-body, in bytes, sent to the recipient.

Syntax

Content-Length: <length>

Directives

<length>
The length in decimal number of octets.

Content-Length Calculation

  • If the request body is a String you can simple use the length of the body.
  • If the request body is a JSON you can just stringify the body.

const requestBody =
{
  data: 
  {
     ...
  }
};
xhr.setRequestHeader("Content-Length", JSON.stringify(requestBody).length.toString());

Read more at: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Length

like image 35
Gil Epshtain Avatar answered Sep 24 '22 03:09

Gil Epshtain