1

Range-headerを使用して、Greasemonkeyスクリプト内でリクエストを送信しようとしました。リクエストされたサイトはかなり長く、実際に必要なパーツがわかっているので、サイト全体のダウンロードをリクエストする代わりに、必要な500バイトをリクエストするだけで処理を高速化できると思いました。

しかし、Range: bytes=0-500常に私に完全なウェブサイトを与えます。私も試しContent-Range: bytes=0-500ましたが、これは機能せず、Content-Length:500セキュリティ上の問題のためにこれ以上設定できません。

それで、なぜそれがこのようであるか、誰かが知っていますか?私はGreasemonkeyスクリプトを使用しています:

 GM_xmlhttpRequest({
    method: 'GET',
    url: "http://colonel-strawberry.deviantart.com/",
     headers: {"Range": "bytes=0-500"}, 
    onload: function (responseDetails) {
      console.log(responseDetails);
    },
    onerror: function(responseDetails) {
      console.log("err:"+responseDetails);
    }
});

応答ヘッダー付き:

Date: Mon, 05 Nov 2012 17:11:42 GMT
Content-Encoding: gzip
Transfer-Encoding: chunked
P3P: policyref="/w3c/p3p.xml", CP="NOI DSP COR CURa OUR STP"
Connection: Keep-Alive
Server: Apache
Vary: Accept-Encoding
Content-Type: text/html
Cache-Control: private
Keep-Alive: timeout=45
4

1 に答える 1

5

ホストcolonel-strawberry.deviantart.comはバイト範囲の要求をサポートしていないようです。

それらをサポートするサーバーからデータを要求する必要があります。

(私は、最初にどこにcurl -H "Range: bytes=50-60" $fooあり、次に、私が制御するサーバー上のURIであるかを比較することによってテストしました)。$foohttp://colonel-strawberry.deviantart.com

HTTP仕様に注意してください:

サーバーはRangeヘッダーを無視してもよい[MAY]。

于 2012-11-05T17:23:51.327 に答える