私は現在、ユーザースクリプトを書いています。つまり、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バイトを取得できますか?