我正在试图找出我的AJAX调用中发生的一些奇怪问题。 我的PHP脚本在开头有这个:
ob_start("ob_gzhandler");
在处理HTML时非常好用。但是使用application/json数据有什么问题吗?有没有任何浏览器问题大家知道的呢?
我不这么认为……我之前使用过存储为gzipped JSON的静态文件,并且在AJAX中可以正常工作。
编辑:我检查了我的php脚本,唯一特殊的事情就是包含了这些头信息:
Content-Encoding: gzip
Content-Type: text/plain
如果我没记错的话,每当我尝试将Content-Type更改为指示JSON的内容时,客户端都会出现问题。
一些旧的浏览器,比如IE6的某些版本,会破坏压缩后的内容,尤其是js内容。
请确保您的服务器发送正确的内容编码头,即
Content-Encoding: gzip
在发送经过gzip压缩的内容之前,您还应该检查浏览器发送的头文件,以确保接受编码头文件正确。
Accept-Encoding: gzip,deflate
当浏览器在请求头中指定Accept-Encoding
为gzip
时,您可以提供经过压缩的内容。在这种情况下,JSON和HTML之间没有区别,也不会出现任何问题。
我建议在Apache中启用压缩(使用mod_deflate),而不是在PHP中启用压缩,这样您可以检查各种不兼容的浏览器,并仅为接受并正确处理压缩数据的浏览器发送压缩数据。