如何在JavaScript中计算Content-Length

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

}

如何计算上述代码中的Content-Length

2个回答

9
规范所述:

Content-Length实体头字段指示实体正文的大小,以十进制OCTETs表示。

请参考JavaScript中字符串长度的字节数
基本上,如果您的数据仅包含ASCII字符,则一切都应该很容易理解。
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);
        }
    });
}

1
Content-Length实体头部指示发送给接收方的实体主体大小,以字节为单位。

语法

Content-Length: <length>

指令

<length>
The length in decimal number of octets.

内容长度计算

  • 如果请求体是字符串,您可以简单地使用请求体的长度。
  • 如果请求体是 JSON,则可以将其转换为字符串。

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

阅读更多内容: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Length


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接