“Content Encoding Error” sau “Cannot Decode Raw Data” este aceeasi eroare, mesajul fiind diferit de la un internet browser la altul. Aceasta eroare poate sa apara atunci cand incercam sa accesam o pagina web de la calaculator sau de pe telefonul mobil.
Utilizatorii de Safari, primesc si un cod de eroare in continuarea mesajului: NSURLErrorDomain – 1015. Asta inseamna ca problema nu poate fi rezolvata de vizitatorul paginii, ci de administratorul website-ului pe care aceasta eroare este prezenta.
Care este cauza erorii “Content Encoding Error” sau “Cannot Decode Raw Data: (NSURLErrorDomain)
Serverele web, fie ca vorbim de Apache sau NGINX, folosesc un sistem de arhivare / comprimare si codare (encoding) gzip al paginilor web, pentru a servi fluxul de date in pachete mai mici utilizatorilor. De exemplu, daca o pagina web are dimensiunea normala de 512KB, cu encoding gzip aceasta se va putea reduce si pana la 150KB. Automat traficul pentru serverul gazda cat si pentru utilizatorul final va fi mai mic cu encoding gzip, iar viteza de incarcare va fi mai mare.
Acest continut gzip trebuie sa contina niste coordonate care sa fie intelese si decodate in mod automat, pentru ca fisierul sa poata fi despachetat si listat utilizatorului final. Valabil atat pe un browser desktop cat si pentru unul mobile. Daca acest lucru nu se intampla, iar fluxul de date venit in format gzip nu poate fi deschis, apar erorile “Content Encoding Error” / NSURLErrorDomain.
Pentru cei care utilizeaza WordPress, eroarea apare de cele mai multe ori cand configureaza gresit plugin-ul WP Super Cache. In setarile “Advanced” ale modulului, exista o optiune recomandata, care comprima paginile web pentru a fi servite mai rapid utilizatorilor. “Compress pages so they’re served more quickly to visitors. (Recommended)”.
Dezactivarea acestei optiuni si stergerea toata a paginilor web din cache poate fi o solutie.
Mai exista si scenariul in care arhivarea nu se face corect la nivel de server, iar comprimarea gzip este activata direct din PHP. In acest scenariu, va trebui sa dezactivati comprimarea direct din fiserul de configurare PHP. Zlib Output Compression.
Cum dezactivam “Zlib Output Compression” pe un web server
Dezactivarea se poate face numai de catre administratorul de server sau printr-un script care va da acces la editarea fisierului php.ini.
Se va seta “off” pentru “zlib.output_compression” din php.ini.
; Valid values for this option are 'off', 'on', or a specific buffer size ; to be used for compression (default is 4KB) ; Note: Resulting chunk size may vary due to nature of compression. PHP ; outputs chunks that are few hundreds bytes each as a result of ; compression. If you prefer a larger chunk size for better ; performance, enable output_buffering in addition. ; Note: You need to use zlib.output_handler instead of the standard ; output_handler, or otherwise the output will be corrupted. ; http://php.net/zlib.output-compression zlib.output_compression = off
Dupa ce se face aceasta modificare, restartati serviciile web ale serverului si totul ar trebui sa revina la normal.
De asemenea nu folositi “Zlib Output Compression” la nivel de server daca aveti si un plugin care face deja acest lucru. Modulul va memora in cache o pagina web deja comprimata, iar la utilizatorul final rezultatul va fi o eroare de decodare a paginii web.