Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Anmeldungen zum Forentreffen 2018 sind auf der Anmeldeseite möglich
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Benötige "Accept-Ranges"

Xb2.Net von Boris Borzic

Moderator: Moderatoren

Antworten
ramses
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Benötige "Accept-Ranges"

Beitrag von ramses » Mi, 20. Dez 2017 23:54

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

Benutzeravatar
Roland Gentner
Programmier-Gott
Programmier-Gott
Beiträge: 1013
Registriert: Fr, 24. Nov 2006 8:30
Wohnort: Neresheim
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Roland Gentner » Do, 21. Dez 2017 0:42

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?
Gruß
Roland

ramses
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Re: Benötige "Accept-Ranges"

Beitrag von ramses » Do, 21. Dez 2017 6:39

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

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13976
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von brandelh » Do, 21. Dez 2017 7:18

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: 13890
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Martin Altmann » Do, 21. Dez 2017 7:38

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: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

ramses
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Re: Benötige "Accept-Ranges"

Beitrag von ramses » Do, 21. Dez 2017 7:45

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

ramses
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Re: Benötige "Accept-Ranges"

Beitrag von ramses » Do, 21. Dez 2017 8:06

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

Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 13890
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Martin Altmann » Do, 21. Dez 2017 8:12

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: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

ramses
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Re: Benötige "Accept-Ranges"

Beitrag von ramses » Do, 21. Dez 2017 8:52

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

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 6884
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Tom » Do, 21. Dez 2017 9:29

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
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Re: Benötige "Accept-Ranges"

Beitrag von ramses » Do, 21. Dez 2017 9:46

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

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13976
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von brandelh » Do, 21. Dez 2017 10:09

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: 13976
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von brandelh » Do, 21. Dez 2017 10:15

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: 6884
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Tom » Do, 21. Dez 2017 10:15

@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
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Re: Benötige "Accept-Ranges"

Beitrag von ramses » Do, 21. Dez 2017 11:12

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

Benutzeravatar
HaPe
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 309
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz

Re: Benötige "Accept-Ranges"

Beitrag von HaPe » Do, 21. Dez 2017 11:31

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
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Re: Benötige "Accept-Ranges"

Beitrag von ramses » Do, 21. Dez 2017 11:57

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

Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 13890
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Martin Altmann » Do, 21. Dez 2017 12:26

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: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

ramses
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Re: Benötige "Accept-Ranges"

Beitrag von ramses » Do, 21. Dez 2017 13:05

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

Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 13890
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Martin Altmann » Do, 21. Dez 2017 13:39

Hallo Carlo,
ramses hat geschrieben:
Do, 21. Dez 2017 13:05
Was 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: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13976
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von brandelh » Do, 21. Dez 2017 13:47

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
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Re: Benötige "Accept-Ranges"

Beitrag von ramses » Do, 21. Dez 2017 18:08

@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) 351 mal betrachtet
Gruss Carlo

Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 13890
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Kontaktdaten:

Re: Benötige "Accept-Ranges"

Beitrag von Martin Altmann » Do, 21. Dez 2017 19:36

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: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

ramses
1000 working lines a day
1000 working lines a day
Beiträge: 810
Registriert: Mi, 28. Jul 2010 17:16

Re: Benötige "Accept-Ranges"

Beitrag von ramses » Fr, 22. Dez 2017 19:40

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

Antworten