Content-Encoding header 通过正向代理消失
Content-Encoding header disappearing through forward proxy
我在 Debian 9 上遇到 Apache 2.4.25
的奇怪问题。我正在 PHP 中卷曲一个页面,通过另一个设置为转发代理的 Apache 服务器进行代理。这个想法是通过未修改的所有内容,但出站流量是从代理发出的。
我注意到,当我执行此操作时,如果我获取带有 Content-Encoding
header 的网页,header 似乎无法通过。当我直接在浏览器中加载页面时,我收到 header。当我在没有代理的情况下尝试卷曲时,我也得到 header.
我如何强制 Apache 代理不删除这个 header,而是逐字传递它收到的所有 header,不加修改?不幸的是,文档中似乎没有关于此的任何内容,我必须获得原始 Content-Encoding
header.
问题原来不是 Apache
,幸运的是,实际上是我在 PHP.
中的 curl
语句
添加以下选项修复它:
curl_setopt($ch, CURLOPT_ENCODING , "");
中获得了尝试这个的灵感
CURLOPT_ENCODING
指示 curl 请求 HTTP 压缩(如果支持)
""
字符串为空,以免强制使用任何特定的压缩方法。如果服务器支持任何形式的压缩,我们将使用该压缩方法取回该页面。
现在,如果我再次 运行 进行测试,我会看到以下附加内容 header:
content-encoding gzip
不确定为什么它似乎在没有代理的情况下也能正常工作,但始终最好明确地指定此选项。与大多数浏览器不同,PHP cURL 不会请求压缩,除非你告诉它,但这是一个简单的修复。
我在 Debian 9 上遇到 Apache 2.4.25
的奇怪问题。我正在 PHP 中卷曲一个页面,通过另一个设置为转发代理的 Apache 服务器进行代理。这个想法是通过未修改的所有内容,但出站流量是从代理发出的。
我注意到,当我执行此操作时,如果我获取带有 Content-Encoding
header 的网页,header 似乎无法通过。当我直接在浏览器中加载页面时,我收到 header。当我在没有代理的情况下尝试卷曲时,我也得到 header.
我如何强制 Apache 代理不删除这个 header,而是逐字传递它收到的所有 header,不加修改?不幸的是,文档中似乎没有关于此的任何内容,我必须获得原始 Content-Encoding
header.
问题原来不是 Apache
,幸运的是,实际上是我在 PHP.
curl
语句
添加以下选项修复它:
curl_setopt($ch, CURLOPT_ENCODING , "");
中获得了尝试这个的灵感
CURLOPT_ENCODING
指示 curl 请求 HTTP 压缩(如果支持)""
字符串为空,以免强制使用任何特定的压缩方法。如果服务器支持任何形式的压缩,我们将使用该压缩方法取回该页面。
现在,如果我再次 运行 进行测试,我会看到以下附加内容 header:
content-encoding gzip
不确定为什么它似乎在没有代理的情况下也能正常工作,但始终最好明确地指定此选项。与大多数浏览器不同,PHP cURL 不会请求压缩,除非你告诉它,但这是一个简单的修复。