Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   PHP gzcompress(); Delphi ZDecompressStr ( ) Data error (https://www.delphipraxis.net/189302-php-gzcompress-%3B-delphi-zdecompressstr-data-error.html)

luisk 29. Mai 2016 11:02

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
ich hab das jetzt mal mit einer Standarddatei applications.html gemacht:
sie ist 1,40 KB (1.441 Bytes) lang. Es sieht demnach nicht nach Komprimierung aus:
Weder mit noch ohne der .htaccess-Datei

C:\Programme\curl>curl -I -H 'Accept-Encoding:gzip,deflate' http://localhost/applications.html
HTTP/1.1 200 OK
Date: Sun, 29 May 2016 09:59:03 GMT
Server: Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3
Last-Modified: Wed, 12 Nov 2014 15:49:59 GMT
ETag: "5a1-507ab591677c0"
Accept-Ranges: bytes
Content-Length: 1441
Content-Type: text/html

luisk 29. Mai 2016 11:13

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
ich hab jetzt mal Deine Seite bei heise.de getestet:
Man sieht: es wird gezippt und das Blank hinter Encodeing: stört auch nicht:

C:\Programme\curl> curl -I -H "Accept-Encoding: gzip,deflate" http://www.heise.de/
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
X-Cobbler: octo02.heise.de
X-Clacks-Overhead: GNU Terry Pratchett
Last-Modified: Sun, 29 May 2016 10:09:20 GMT
Expires: Sun, 29 May 2016 10:09:52 GMT
Cache-Control: public, max-age=32
Content-Length: 47236
Accept-Ranges: bytes
Date: Sun, 29 May 2016 10:09:27 GMT
Age: 7
Connection: keep-alive
Vary: User-Agent,Accept-Encoding,X-Forwarded-Proto,X-Export-Format,X-Export-Agent

Bei meinem Xampp-Apache ist also kein Gzip aktiv - und warum die host-Fehlermeldung ?

Valle 29. Mai 2016 11:26

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Dann ist das Gzip-Modul wohl doch nicht geladen.

Schau mal hier: https://stackoverflow.com/questions/...n-xampp-server

Wenn du Änderung an der Apache Config machst, musst du den Apache hinterher neustarten.

Noch ein Tipp: Entferne das <IfModule> aus der .htaccess. Dann kriegst du einen 500 Internal Server Error, wenn das Modul nicht geladen ist. Ist vielleicht besser.

luisk 29. Mai 2016 12:08

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
so, hab jetzt die httpd.conf entsprechend angepasst
und nachdem ich noch die .htaccess wieder komplett entfernt habe, läuft es:

C:\Programme\curl> curl -I -H "Accept-Encoding: gzip,deflate" http://localhost/applications.html
HTTP/1.1 200 OK
Date: Sun, 29 May 2016 11:04:47 GMT
Server: Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3
Last-Modified: Wed, 12 Nov 2014 15:49:59 GMT
ETag: "5a1-507ab591677c0-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 770
Content-Type: text/html

Vielen Dank für die Hilfe, Valle.

luisk 29. Mai 2016 12:40

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Klappt doch noch nicht ganz.
Bei php wird wohl noch nicht gezippt

C:\Programme\curl> curl -I -H "Accept-Encoding: gzip,deflate" http://127.0.0.1/SQL_Gateway/SQL_Abf...php?bef=Select...
HTTP/1.1 200 OK
Date: Sun, 29 May 2016 11:33:45 GMT
Server: Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3
X-Powered-By: PHP/5.6.3
Content-Type: text/html; charset=UTF-8

obwohl ich mal versucht habe hier php zu ergänzen:
Delphi-Quellcode:
<Directory "C:/your-server-root/manual"> #any path to which you wish to apply gzip compression to!
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html # or any file type you wish
      AddOutputFilterByType DEFLATE text/php
    </IfModule>
</Directory>

Delphi-Quellcode:
<Directory "C:/your-server-root/manual"> #any path to which you wish to apply gzip compression to!
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
    </IfModule>
</Directory>

luisk 29. Mai 2016 13:17

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
weitere Erkenntnis:
wenn ich nun in mein php-Script folgende Zeile einfüge:
ob_start('ob_gzhandler');
und TIdHTTP.Compressor:=TIdCompressorZLib; zuweise
dann klappt es :thumb:
Wenn ich TIdHTTP.Compressor:=nil; setze dann sehe ich, dass ein gezippter String kommt :idea:
So, später schaue ich mir dann mal WireShark ohne Firewall an.

Danke für die Hilfen.:thumb:

luisk 29. Mai 2016 13:29

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Mich würde dennoch interessieren,
ob man das nicht auch mit einer Delphi-Funktion wie gZDecompressStr() hinbekommt.

Valle 29. Mai 2016 13:37

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Zitat:

Zitat von luisk (Beitrag 1339129)
Mich würde dennoch interessieren,
ob man das nicht auch mit einer Delphi-Funktion wie gZDecompressStr() hinbekommt.

Natürlich kriegt man das hin. Höchstwahrscheinlich ist es ein Encoding Problem. Du könntest man versuchen ein base64 Encode / Decode darüber laufen zu lassen. Damit hast du zwar wieder mehr Traffic (also das ist nicht sinnvoll für die Produktion), aber du kannst testen ob es ein Problem auf dem Übertragungsweg ist. Da kann ich dir aber nicht helfen; da kein Delphi.

Zitat:

Zitat von luisk (Beitrag 1339127)
obwohl ich mal versucht habe hier php zu ergänzen:

Du hast die Zeilen aber schon angepasst, oder? Der Pfad ist ja nur ein Beispielpfad. Außerdem würde ich das IfModule weglassen.

Zitat:

Zitat von luisk (Beitrag 1339128)
weitere Erkenntnis:
wenn ich nun in mein php-Script folgende Zeile einfüge:
ob_start('ob_gzhandler');
und TIdHTTP.Compressor:=TIdCompressorZLib;
dann klappt es :thumb:
Wenn ich TIdHTTP.Compressor:=TIdCompressorZLib; weglasse, dann sehe ich, dass ein gezippter String kommt :idea:
So, später schaue ich mir dann mal WireShark ohne Firewall an.

Das kannste auch so machen, natürlich. Du könntest den Content-Encoding Header mit PHP dann auch selbst setzen um standardkonform zu bleiben.

luisk 29. Mai 2016 13:41

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Zitat:

Zitat von Valle (Beitrag 1339130)
Du könntest den Content-Encoding Header mit PHP dann auch selbst setzen um standardkonform zu bleiben.

Mich würde interessieren wie das geht. Das wäre mir lieber, wenn das klappt.

wenn ich
Delphi-Quellcode:
ob_start('ob_gzhandler');
in php weglasse, wird nicht gezippt.

Delphi-Quellcode:
 AddOutputFilterByType DEFLATE text/php text/plain
bringt nichts

luisk 29. Mai 2016 14:34

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
bei das Entzippen über die Indy-Komponente funktioniert anscheinend nur,
wenn der Webserver das Zippen unterstützt:
daher:
Delphi-Quellcode:
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
   ob_start('ob_gzhandler');
else
   ob_start();


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 Uhr.
Seite 4 von 5   « Erste     234 5      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz