小编Sha*_*ais的帖子

带有内容编码的内容丰富的响应:gzip返回了不正确的content-length标头

我有一个symfony2应用程序,其中我正在使用Guzzle http客户端向服务器发送GET请求,以便检索json文件的内容。Guzzle响应被转换为针对浏览器的Symfony2响应。

Guzzle响应返回以下标头:

内容编码:gzip内容长度:2255内容类型:application / json

将数据输出到UI /浏览器时,我注意到由于Content-Length不正确,该数据被切断了。文件的大小接近4905字节,而不是2255。2255是直到截止点为止的数据的确切长度。我怀疑2255是压缩数据的大小,并且在不更新内容长度的情况下在某些时候未压缩它。现在,我确实确认我已取回所有数据,但是荣幸地使用了内容长度标头,这就是为什么在将数据转发到浏览器时,数据会被切断的原因。有趣的是,即使内容长度为2255,点击json文件的url也会直接产生全部内容,这意味着Chrome直接点击文件时会忽略它。如果我使用POSTman REST客户端发出GET请求,则完全相同-显示全部内容。

默认情况下,Guzzle具有请求选项解码器内容= true,用于处理响应。我在提交请求时将其设置为false,但这似乎无法解决问题。

在将Guzzle响应转换为Symfony响应之前,我删除了content-length标头,这似乎可以解决问题,但是我不确定这是最好的方法,因为RFC协议规定除非传输编码,否则应该存在content-length标头标头存在,但不存在。https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html

另一个选择是,由于这是流式响应,因此要获取流的大小并校正内容长度,但是Guzzle实现为此使用strlen(),这对读取整个流具有不良影响。

如果选择省略content-length标头,可能会遇到什么问题?或者,是否有一种方法可以在不读取整个流的情况下获取内容的TRUE长度,而仅以正确的数量更新content-length报头?

php json gzip content-length guzzle

5
推荐指数
0
解决办法
576
查看次数

当我尝试运行ApiGen时,我得到一个PHP警告:require(Texy.php):无法打开流:没有这样的文件或目录

我使用以下命令成功安装了ApiGen:

pear channel-discover pear.apigen.org
pear channel-discover pear.nette.org
pear channel-discover pear.texy.info
pear channel-discover pear.kukulich.cz
pear channel-discover pear.andrewsville.cz

pear install apigen/ApiGen
Run Code Online (Sandbox Code Playgroud)

然后我跑了:

apigen -s /home/first.last/path/to/source/directory -d /home/first.last/path/to/destination/directory/
Run Code Online (Sandbox Code Playgroud)

只是为了得到以下错误:

PHP Warning:  require(Texy.php): failed to open stream: No such file or directory in /usr/bin/apigen on line 48
PHP Stack trace:
PHP   1. {main}() /usr/bin/apigen:0
PHP   2. class_exists('Texy') /usr/bin/apigen:64
PHP   3. spl_autoload_call('Texy') /usr/bin/apigen:64
PHP   4. ApiGen\{closure}($class = 'Texy') /usr/bin/apigen:0
PHP Fatal error:  require(): Failed opening required 'Texy.php' (include_path='.:/usr/share/pear:/usr/share/php') in /usr/bin/apigen on line 48
PHP Stack …
Run Code Online (Sandbox Code Playgroud)

php apigen

0
推荐指数
1
解决办法
1578
查看次数

标签 统计

php ×2

apigen ×1

content-length ×1

guzzle ×1

gzip ×1

json ×1