Wie lautet die richtige Antwort auf eine GET-Anfrage mit dem Header-Feld Range: bytes=278528-
, wenn Range
nicht unterstützt wird?
Lesen der HTTP-Header-Definitionen ( Ссылка ) ich denke, ich sollte mindestens setzen: Accept-Ranges: none
, aber es ist klar, dass
Clients KÖNNEN Bytebereichsanforderungen generieren, ohne diesen Header für die betreffende Ressource erhalten zu haben.
Wenn also ein Client einen Bereich anfordert, sollte ich:
Sie können es ignorieren, wie die Spezifikation sagt. Um genau zu sein:
Ich habe das nicht getestet, aber die Spezifikation scheint ziemlich klar zu sein. Ich habe diese Arbeit gesehen - wget oder curl zu verwenden, um einen unterbrochenen Download fortzusetzen, wird von Anfang an ordnungsgemäß neu gestartet, wenn der Server den Range-Header nicht unterstützt.
RFC2616 Abschnitt 14.35.2 sagt:
Ein Server darf den Range-Header ignorieren.
Das Ignorieren von Reichweitenanfragen kann Spielinhalte (die riesig sind) auf dem Airplay-Dienst oder einem anderen instabilen oder inakzeptablen machen. Ich weiß, dass http ist nicht richtig protokol, um Video zu übertragen, aber versuchen, Video zu Airplay vom Server zu senden nicht akzeptiert Bereiche .... Airplay verwendet Bereichsanfragen ...
Die Möglichkeit besteht darin, den http-Header zu überprüfen und, falls es eine Range-Zeichenfolge gibt, diese zu parsen, Bereiche zu analysieren, Skip- und Take-Positionen zu berechnen, den Dateistream von URL zu öffnen und zu versuchen, die Bytes zu übernehmen Antwort von ihm, Antwort senden und schließlich nahe Strom. Vergessen Sie nicht, mit der Bereichsüberschrift zu antworten
ignorieren Sie nicht den Bereich, niemals wenn Sie an großen Streams arbeiten.
Wenn Sie nanohttp verwenden, kann ich Ihnen mit Beispiel
helfenTags und Links webserver range http http-headers download