Benötige "Accept-Ranges"

Xb2.Net von Boris Borzic

Moderator: Moderatoren

Antworten
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Benötige "Accept-Ranges"

Beitrag von ramses »

Hallo

Der neue Firefox in der 64 Bit Version erfordert dass für die übertragung grösseren Inhalten das Range Bytes "Accept-Ranges" im Header gesetzt ist und der Server dies unterstüzt. Mit "Ranges" kann der Browser Dateien in Teilen anfordern.
XB2 unterstüzt dieses nicht. Das hat zur folge dass die entsprechenden Inhalte dann nicht oder nur teilweise verfügbar sind.

Hat dies schon jemand gelöst? Bezw. eine entsprechende Erweiterung geschrieben?

Beim Einsatz von Chrome, Edge, IExporer und Firefox 32Bit tritt das Problem nicht auf bezw. diese verwenden "Range" nicht.

Gruss Carlo
Valar Morghulis

Gruss Carlo
DelUser01

Re: Benötige "Accept-Ranges"

Beitrag von DelUser01 »

Hallo Carlo

wo bist Du da wieder drübergestolpert
ramses hat geschrieben: Mi, 20. Dez 2017 23:54...Firefox...Range Bytes "Accept-Ranges" im Header...XB2 unterstüzt dieses nicht...
Was hat jetzt Firefox mit XB2 zu tun?
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Benötige "Accept-Ranges"

Beitrag von ramses »

Hallo Roland

Firefox ist der Client, eine App mit xb2.net ist der WebServer. Wenn du in Firefox eine Seite öffnest muss der Websever diverse Files an den Client senden. Für Inhalte möchte Firefox in einem GET Request nun auch nur Teile einer Datei abrufen können. Siehe: RFC2616 Kapitel 14.16 Content-Range

Wir, ich mit Xbase und 2 Html/Css/Javascript Profis sind am umschreiben einer Xbase-ADS-Gui-App auf eine reine Web-App mit Postgresql dabei sind wir darüber gefallen dass Firefox nach einem Update Inhalte nicht mehr korrekt verarbeitet hat und mit anderen Browsern die Probleme nicht da waren. Die Analyse hat dann obige Ursache gezeigt. Bei Chrome steht vermutlich diese Änderung auch noch an, der sendet immer Range: 0- was bedeutet die ganze Datei. Wir planen über die Festage das Roll-Out der App um die Mitarbeiter ab dem 27. bei der folgenden Inventaraufnahme zu beobachten .......... Da sind wir ziemlich spät über diese Erkenntnis "gestolpert" .....

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von brandelh »

Ich selbst nutze zwar nicht XB2, sondern schreibe CGI EXE, die auf die Anforderungen des Browsers reagieren und die Antwort zurücksenden,
aber genau das dürfte bei XB2 auch nicht anders sein. Du musst dieses Feld auswerten und die Antwort irgendwie begrenzen ...
wie genau müsste dann wohl in einer Beschreibung zu dem Feld stehen. Wobei mich schon wundert, dass ausgerechnet die 64-Bit Version weniger anfordern soll, als die 32-Bit.
Und was genau ist damit gemeint, ein Teil einer WEB-Site, ein Teil eines Bildes ?
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Martin Altmann »

Carlo,
was spricht dagegen, bei deinen HTML-Seiten (die ja unter Deinem Xb2.NET-Server generiert werden), den Headereintrag explizit abzuschalten?
Also "Accept-Ranges: None" einzufügen?
Damit machst Du dem Client klar, dass dieses Feature nicht unterstützt wird!

Hubert,
das dient zum Beispiel dazu, einen abgebrochenen Abruf einer Seite an der Stelle fortzuführen, an dem er unterbrochen wurde. :arrow: https://developer.mozilla.org/en-US/doc ... ept-Ranges

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Benötige "Accept-Ranges"

Beitrag von ramses »

Hallo Hubert
Und was genau ist damit gemeint, ein Teil einer WEB-Site, ein Teil eines Bildes ?
Files, die grösser als 4-5MB sind, die genaue Grenze habe ich nicht gefunden.
die 64-Bit Version weniger anfordern soll
Nein nicht weniger sondern anders. Er fordert als erstes die ganze Datei an: bytes=0- bricht dann aber die übertragung während der Darstellung des Inhalts ab und fordert später den rest der Datei auch noch an z.B. bytes:4175600-
Ist "Accept-Ranges" nicht gesetzt wird der Rest nicht angefordert und auch nicht dargestellt.
So lässt sich vermutlich der Seitenaufbau des sichtbaren Bereichs wesentlich beschleunigen.
Ich habe gehofft dass jemand diese Art GET Request bereits umgesetzt hat. Was zu tun ist ist in der RFC2616 14.16 recht gut beschrieben.

Hallo Matin

Danke für den Tip. Werde ich gleich Testen.


Gruss Carlo
Valar Morghulis

Gruss Carlo
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Benötige "Accept-Ranges"

Beitrag von ramses »

Hallo Martin

Leider wird "None" ignoriert. Das Verhalten ist so wie wenn Accept-Range nicht gesetzt ist.

Ich habe gestern bei der Recherche den kurzen Hinweis:
Your server must enable Range requests.
gefunden.

Ich versuche heute mal die Methode xbHTTPThread:SendFile() zu überarbeiten und Ihr Accept-Range=bytes beizubringen.

Dennoch danke für deinen Typ.

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Martin Altmann »

Ich gehe davon aus, dass Du "none" geschrieben hast - alles klein und in " eingefasst.
Oder?
:arrow: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html - Abschnitt 14.5

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Benötige "Accept-Ranges"

Beitrag von ramses »

Hallo Martin

ich habe dazu die zugehörige Funktion verwendet:

oResponse:SetHeader( "Accept-Ranges", "none" )

Die kommt im Firefox auch richtig an, im Debugger unter Antwortkopfzeilen steht: Accept-Ranges: none

Dies wird aber nicht berücksichtigt. Scheinbar muss wirklich zwingend die "bytes" unterstützt werden.

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Tom »

Wie merkst Du, dass es nicht berücksichtigt wird?

Ranges sind ziemlich gut, wenn man wirklich große Dokumente vorhalten muss. Das dürfte sich auch vergleichsweise leicht umsetzen lassen, weil der Client ja konkret sagt, welchen Range er erhalten will, so dass man nur die fragliche Portion aus dem Dokument ausschneiden und senden muss. Die Alternative sind Chunks, aber das passiert dann serverseitig (wenn es vom Client unterstützt wird). 0-Chunks kann man außerdem verwenden, wenn es sehr lange dauert, die Antwort zu generieren, und Timeouts vermieden werden sollen.
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Benötige "Accept-Ranges"

Beitrag von ramses »

Hallo Tom
Wie merkst Du, dass es nicht berücksichtigt wird?
er (Firefox) holt sich 4.9 MB vom aktuellen Dokument (11.1 MB) und tut dann nichts mehr.

Wenn ich Accept-Ranges auf bytes setzte sendet er wenig später einen weiteren Request für den Rest des Dokuments da mein Code dies noch nicht unterstützt und nun erneut die Datei von Anfang an sendet gibts ein Chaos ....

Ich ändere jetzt die Methode xbHTTPThread:SendFile() in xb2net entsprechend für Ranges ab und hoffe dass dies das Problem beseitigt.

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von brandelh »

Seit wann darf ein Browser Client entscheiden, was der Server zu liefern hat ?

Der Server muss das abschalten können.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von brandelh »

Code: Alles auswählen

14.5 Accept-Ranges
      ...
      Servers that do not accept any kind of range request for a
      resource MAY send
          Accept-Ranges: none
      to advise the client not to attempt a range request.
wenn der Firefox 64 bit damit nicht klar kommt, liegt ein Programmfehler seinerseits vor.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Tom »

@Hubert: Kann er nicht. Accept-Ranges ist ein Merkmal im Header des Dokuments, das der Server sendet. Wenn es nicht vorhanden ist oder auf "none" steht, sollte der Client auch nicht versuchen, in Häppchen abzurufen.
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Benötige "Accept-Ranges"

Beitrag von ramses »

Hallo

wie Tom auch schreibt: Steht das Argument auf "none" oder ist nicht vorhanden versucht der Browser nicht Häppchen abzurufen. Er ruft einfach nur den ersten Teil ab. Wenn "Mann" oder "Frau" den Rest auch sehen will muss auf dem Server Range auf byte gesetzt werden. Zwangsumstellung eben .....

Die aktuelle 32 Bit Version 52.5.2 hat dieses Verhalten nicht. Die funktioniert einwandfrei. Erst die 64 Bit Version 57 brachte dieses neue Verhalten.

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: Benötige "Accept-Ranges"

Beitrag von HaPe »

Hallo Carlo !
wenn der Firefox 64 bit damit nicht klar kommt, liegt ein Programmfehler seinerseits vor.
Erst die 64 Bit Version 57 brachte dieses neue Verhalten.
Probier doch mal die 64-Bit-Beta-Version aus; ist aktuell die 58.0b12.

Oder du kannst mir die URL zukommen lassen falls die Seite im Internet liegt und keine Zugangsdaten benötigt ...
--
Hans-Peter
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Benötige "Accept-Ranges"

Beitrag von ramses »

Hallo Hans-Peter

danke für den Tip. Habe mit der beta getestet. Ist das selbe.
Anscheinend ist es heute normal dass Accept-Ranges grundsätzlich auf Bytes gesetzt ist. Ich habe im Inhalt einiger Webseiten nachgeschaut der Parameter ist überall auf Bytes gesetzt. Mit None habe ich nichts gefunden.

Auch hier im Forum ist Bytes gesetzt. Sogar für kleine gif Dateien.


Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Martin Altmann »

Carlo,
im RFC ist none ein valider Wert! Wenn der Client damit nicht klarkommt, ist es ein Problem des Clients!
Es könnte auch sein, dass es einen weiteren Parameter im Header gibt, der in dem Fall ebenfalls entsprechend gesetzt sein muss - so genau habe ich mir die RFC nicht durchgelesen.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Benötige "Accept-Ranges"

Beitrag von ramses »

Hallo Martin
Wenn der Client damit nicht klarkommt, ist es ein Problem des Clients!
Da bin ich mit dir absolut der gleichen Meinung. Nur das zu Wissen zeigt mir das Problem aber bringt mir die App aber nicht wieder zum laufen.

Der Parameter ist schon alleine einsetzbar.

Die RFC2616 stammt aus der Steinzeit aus dem letzten Jahrtausend! Im laufe der letzten Jahre wurden sicher viele der Parameter daraus nicht mehr vollständig umgesetzt bezw. es wird heute als minimalanforderung von gewissen gesetzten Parametern ausgegangen, wie hier, um z.B. Ladezeiten zur verbessern und dem User den Anfang schon anzuzeigen vor alles übertragen ist. Dieses Ziel hat Firefox 57 sehr gut erreicht.

Leider ist es schlussendlich aber nicht so einfach ein Problem des Clients. Sondern meins!!!

Was würdest du tun?



Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Martin Altmann »

Hallo Carlo,
ramses hat geschrieben: Do, 21. Dez 2017 13:05Was würdest du tun?
für Dich gibt es mehrere Möglichkeiten.
Die einfachste (in Deinem Fall auch machbar, da es bei Dir ja scheinbar nur um Zugriffe aus dem Intranet geht): Für die Anwendung einen anderen Browser als Firefox nutzen!
Du solltest auf jeden Fall auch mal in Boris' Newsgroup posten (falls noch nicht geschehen).
Du könntest auch (wie bereits von Dir angedacht) die SendFile()-Methode anpassen - oder mit :FilterRequest() arbeiten und den eingehenden Verkehr entsprechend parsen und reagieren. Dabei gibt es nur ein (nicht unwesentliches) Problem mit dynamischen HTML-Seiten: Du kannst nicht garantieren, dass bei einer dynamischen HTML-Seite das Byte 768 das selbe Byte ist, wenn diese Seite erneut abgerufen wird! Also müsstest Du ggf. dynamisch generierte Seiten für jede aktive Session auf dem Server statisch vorhalten - zumindest für einen gewissen Zeitraum.
Im übrigen habe ich hier im Forum den Headereintrag nicht gefunden (zumindest nicht, wenn ich mir im IE 11 den source dieser Seite oder der Hauptseite anschaue).

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von brandelh »

Wenn ich es verbessern könnte, würde ich das auch machen, ansonsten darauf verweisen, dass der FireFox 64 bit dieser Version wohl einen Fehler hat, mit den anderen geht es ja auch.
Gruß
Hubert
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Benötige "Accept-Ranges"

Beitrag von ramses »

@Martin

du musst nicht den Sourcecode der Seite anschauen sondern den Datentransfer mit dem Debugger.
Im Firefox Taste F12

BSP:
range-bytes.jpg
range-bytes.jpg (72.23 KiB) 15484 mal betrachtet
Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Martin Altmann »

Da dort nichts explizit im Source steht, wird es wohl default sein (je nach Konfig Webserver).

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Benötige "Accept-Ranges"

Beitrag von ramses »

Hallo Martin

mittlerweile habe ich das Problem durch Anpassung der Methode sendfile() im Server-Code gelöst.

Das Problem ist folgendes: Enthält ein GET Request Header den Eintrag "Range: bytes=0-" MUSS der Server eine entsprechende Anwort liefern.
Anscheinend gehen die Browser davon aus dass die Server dies Unterstützen und senden "Range.." ohne dies mit einer vorausgehenden Anforderung zu prüfen.

Die Infos und genauen Details sowie den angepassten Code habe ich auch an Boris gesandt.

Gruss Carlo
Valar Morghulis

Gruss Carlo
Antworten