Is possible convert “ArrayBuffer” to some “readable” format like JSON? - Chrome extension

牧云@^-^@ 提交于 2019-12-22 10:44:42

问题


Is possible to convert "ArrayBuffer" to some "readable" format like JSON?

Test script:

<script>
try {
   http = new ActiveXObject("Microsoft.XMLHTTP");   // Trying IE
}
catch(e)    // Failed, use standard object 
{
  http = new XMLHttpRequest(); 
}

var url = "http://localhost/test.htm";
var params = "param=abc&param2=62";
http.open("POST", url, true);

http.onreadystatechange = function() {//Call a function when the state changes.
    if(http.readyState == 4 && http.status == 200) {
        alert('send..');
    }
}
http.send(params);
</script>

on BACKGROUND (chrome extension) Request LISTENER: (receive xhr from test.htm)

chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
        console.log(details); 
},
{
urls: ["*://localhost/*"]
},
['requestBody']);

console.log result:

Object {frameId: 0, method: "POST", parentFrameId: -1, requestBody: Object, requestId: "12981"…}
frameId: 0
method: "POST"
parentFrameId: -1
requestBody: Object
raw: Array[1]
0: Object
bytes: ArrayBuffer
byteLength: 32
__proto__: ArrayBuffer
constructor: function ArrayBuffer() { [native code] }
slice: function slice() { [native code] }
__proto__: Object
__proto__: Object
length: 1
__proto__: Array[0]
__proto__: Object
requestId: "12981"
tabId: 180
timeStamp: 1367604574726.125
type: "xmlhttprequest"
url: "http://localhost/test.htm"
__proto__: Object

I need convert details.requestBody.raw back to param=abc&param2=62 or JSON. Thank you

http://developer.chrome.com/dev/extensions/webRequest.html


回答1:


I use that lib - https://github.com/vicetjs/array-buffer-to-data

chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
        try {
            if (details && details.type === "xmlhttprequest" && 
                var buffer = details.requestBody.raw[0].bytes;
                console.log(arrayBufferToData.toJSON(buffer));//JSON payload body
            }
            return {requestHeaders: details.requestHeaders};
        } catch(e) {
            console.log(e.stack);
        } 
    },
    {urls: ["<all_urls>"]},
    ["requestBody"]);


来源:https://stackoverflow.com/questions/16365532/is-possible-convert-arraybuffer-to-some-readable-format-like-json-chrome

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!