Autor Zpráva
_pepak
Profil *
Každý klient a každý druhý server dnes používá kompresi pro svoje odpovědi. Řešil někdo i případ, kdy by klient komprimoval svůj požadavek (např. při POSTování dlouhých ale dobře komprimovatelných souborů) a server si ho automaticky dekomprimoval? Jak chápu protokol HTTP, tak by to v zásadě mělo fungovat, když si do hlavičky požadavku dám správný Content-Encoding, ale podporují to servery v praxi? Tzn. můj request by vypadal například takhle:

POST /form.php HTTP/1.1
Host: www.mojedomena.cz
Content-type: application/x-www-form-urlencoded
Content-length: 123456
Content-encoding: gzip

a tady by byl zaGZIPovaný obsah formuláře. Dokázal by to server správně dekódovat tak, aby třeba PHP skript na jeho straně viděl login=franta&password=123456, místo aby si musel sám řešit dekódování toho obsahu?
ShiraNai7
Profil
Zkusil jsem to a takto poslaná data se neukážou v $_POST. Musel bys kontrolovat $_SERVER['CONTENT_TYPE'] a $_SERVER['HTTP_CONTENT_ENCODING'] a data si zpracovat sám. Tyto data (komprimovaná a ve formátu application/x-www-form-urlencoded ) získáš takto:

$input = fopen('php://input', 'r');
$data = stream_get_contents($input);
fclose($input);

Zřejmě to PHP nepodporuje. Jestli to je správně nebo špatně nevím.
Davex
Profil
_pepak:
Apache by měl přijatá data automaticky rozbalit, pokud se správně nastaví kompresní modul mod_deflate.
_pepak
Profil *
<b>Davex:</b> No vida, to by mohla být odpověď! Děkuju!
_pepak
Profil *
Kdyby to někoho zajímalo, tak to opravdu funguje. Akorát si člověk musí ten požadavek zkomprimovat sám.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: