如何解决内容编码标头通过转发代理消失
我在Debian 9上遇到Apache 2.4.25
的奇怪问题。我正在通过另一个设置为正向代理的Apache服务器卷曲PHP代理中的页面。想法是让所有内容都经过未修改,但出站流量是从代理发出的。
我注意到,当我执行此操作时,如果获取带有Content-Encoding
标头的网页,则标头似乎无法通过。当我直接在浏览器中加载页面时,会收到标题。当我尝试在没有代理的情况下卷曲时,我还会获得标头。
如何强制Apache代理不删除此标头,而是按原样传递未经修改的所有标头?不幸的是,文档中似乎没有任何内容,而且必须获得原始的Content-Encoding
标头。
解决方法
值得庆幸的是,这个问题不是Apache
,而是我在PHP中的curl
语句。
添加以下选项可修复该问题:
curl_setopt($ch,CURLOPT_ENCODING,"");
我的灵感来自slightly related question。
-
CURLOPT_ENCODING
指示curl请求HTTP压缩(如果支持) -
""
字符串为空,以免强制使用任何特定的压缩方法。如果服务器支持任何形式的压缩,我们将使用该压缩方法返回该页面。
现在,如果我再次运行测试,则会看到以下附加标题:
content-encoding gzip
不确定为什么没有代理就可以正常工作,但总是最好明确地指定此选项。与大多数浏览器不同,除非您告知PHP cURL,否则它不会请求压缩,但这是一个简单的解决方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。