0

私は現在、ユーザースクリプトを書いています。つまり、JavaScriptは、ユーザースクリプトがアクセス時にブラウザによって指定されたWebサイトに「挿入」されます。

ここで、たとえばこのサイトの最後の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バイトを取得できますか?

4

0 に答える 0