如何在javascript中发送一个全新的请求

时间:2013-03-16 21:43:15

标签: javascript http-headers xmlhttprequest

我正在写一个用户脚本。这意味着,javascript被“注入”用户在访问时由浏览器指定的网站。

现在我想只得到例如最后500字节的字节。这个网站http://www.tgchan.org/kusaba/quest/res/499039.html

使用Greasemonkey一切正常:

GM_xmlhttpRequest({
    method: 'GET',
    headers: {
        "Accept-Encoding": "",   
        "Range": "bytes=-500"          
    },
    url: window.location.href.match(/http:\/\/[\s\S]*\//) + 'res/'+threadid+".html",
    onload: function(responseDetails) {
        console.log(responseDetails.responseText.length);
    }
});

但是没有像GM_xmlhttpRequest那样做

var r = new XMLHttpRequest();
r.onreadystatechange=function(){if(r.readyState==4)console.log ( r.responseText.length );}; 
r.open('GET', 'res/'+threadid+".html",true);
r.setRequestHeader('Range', 'bytes=-500');
r.setRequestHeader('Accept-Encoding', '');
r.send(null);

或使用jQuery或Ajax将导致

  

Accept-Encoding:gzip,deflate

因此,此标头已设置且无法更改。

现在,据我所知,我无法更改此标题,我可以以某种方式执行全新的请求,例如Greasemonkey正在使用吗? Chrome和Opera的Tampermonkey也失败了...... 或者,即使是gzip编码,我还可以获得最后500个字节吗?

0 个答案:

没有答案