1

私が取り組んでいる組み込みデバイスでは、Web ページの Javascript が要求をローカルの PHP ファイルに送信し、その応答を使用して DOM 要素を動的に更新します。すべて正常に動作します。AJAX はクールです。

しかし、厄介なことに、すべての応答は gzip でエンコードされています (ターゲット デバイスのプロセッサには処理帯域幅があまりありません)。問題は、応答を圧縮する gzip を無効にする方法がわからないことです。

注意: (1) サーバー側では、Ubuntu で PHP 5.3.10 と Apache/2.2.22 を使用してテストしています。

(2) クライアント側では、Firefox 19.0 と Firebug を使用しています。

(3) PHP ファイルは単に出力をエコーし​​ています。つまり、ob_gzhandler() を呼び出しているとは思えません。

(4) JavaScript が POST ではなく GET を使用している (これはプロジェクトで指定されたものです)

Firebug によると、リクエスト ヘッダーは次のようになります。

Accept      text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Cookie     PHPSESSID=<whatever>
Host    10.0.2.15
Referer http://10.0.2.15/pages/status.php
User-Agent  Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0

通常、応答ヘッダーは次のようになります。

Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection     Keep-Alive
Content-Encoding    gzip
Content-Length  59
Content-Type    text/html
Date    Wed, 13 Mar 2013 12:08:02 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive      timeout=5, max=43
Pragma   no-cache
Server   Apache/2.2.22 (Ubuntu)
Vary    Accept-Encoding
X-Powered-By    PHP/5.3.10-1ubuntu3.5

私がすでに試したアプローチ(ただし、成功していません):-

(a) php ファイルの出力がローカルの .htaccess ファイルを介して gzip 圧縮されないようにする

<IfModule mod_env.c>
SetEnvIfNoCase Request_URI "\.php$" no-gzip dont-vary
</IfModule>

これはhttp://support.modwest.com/content/1/117/en/how-do-i-turn-off-webservers_-gzip-compression.htmlによるものでしたが、何の効果もないように見えました。呼び出しの間にapache2を再起動したとき。

(b) /etc/apache2/httpd.conf ファイルを使用して、php ファイルの出力が gzip 圧縮されないようにする

<Directory /myfolder>
      RemoveOutputFilter php
</Directory>

これも、呼び出しの間に apache2 を再起動した場合でも、明らかな効果がないように見えました。

(c) XMLHttpHeader.setHeaderRequest() を使用して、「Accept-Encoding」ヘッダーを「」または「identity」に設定する

両方試してみました

xmlhttp.setRequestHeader("Accept-Encoding", "identity");

...と...

xmlhttp.setRequestHeader("Accept-Encoding", "");

どちらも明らかな効果はないようでした: Firebug はまだ要求ヘッダーが保持されていると報告しています

Accept-Encoding gzip、デフレート

これについて仕様を確認したところ、setRequestHeader() で AcceptEncoding ヘッダー行を変更できるようにする必要があるようで、これは少し奇妙です。おそらく埋められたFFセキュリティホール? http://www.w3.org/TR/2006/WD-XMLHttpRequest-20060405/#dfn-setrequestheader

追加するため、setRequestHeader() メカニズムは明らかに正常に機能していることに注意してください...

xmlhttp.setRequestHeader("X-FavouriteFruit", "バナナ");

...Firebug リクエスト出力に行を追加します。

X-Favouriteフルーツバナナ

基本的に、私はほとんどアイデアがありません。PHP 応答が gzip されるのを止めるにはどうすればよいですか?

4

1 に答える 1

0

デバイスでApacheを使用してPHPファイルを提供しているように見えます。つまり、/ etc / php.ini(または@php_value経由の.htaccess)でこのようなものを試すことができます。

zlib.output_compression = Off

[言語オプション]セクション。

于 2013-03-13T14:26:07.137 に答える