【问题标题】:Content-Encoding header disappearing through forward proxyContent-Encoding 标头通过转发代理消失
【发布时间】:2020-12-11 06:40:26
【问题描述】:

我在 Debian 9 上遇到了一个关于 Apache 2.4.25 的奇怪问题。我正在通过另一个设置为正向代理的 Apache 服务器卷曲 PHP 代理中的一个页面。这个想法是让所有东西都未经修改地通过,但出站流量是从代理发出的。

我注意到,当我这样做时,如果我获取带有 Content-Encoding 标头的网页,标头似乎没有通过。当我直接在浏览器中加载页面时,我会收到标题。当我在没有代理的情况下尝试卷曲时,我也得到了标题。

如何强制 Apache 代理不删除此标头,而是逐字传递它收到的所有标头,未经修改?不幸的是,文档中似乎没有任何关于此的内容,我必须获得原始的 Content-Encoding 标头。

【问题讨论】:

    标签: php apache proxy http-proxy mod-proxy


    【解决方案1】:

    问题不是Apache,谢天谢地,而是我在PHP中的curl语句。

    添加以下选项可以修复它:

    curl_setopt($ch, CURLOPT_ENCODING , "");
    

    我的灵感来自slightly related question

    • CURLOPT_ENCODING 指示 curl 请求 HTTP 压缩(如果支持)
    • "" 字符串为空,以免强制使用任何特定的压缩方法。如果服务器支持任何形式的压缩,我们将使用该压缩方法取回该页面。

    现在,如果我再次运行测试,我会看到以下附加标题:

    content-encoding      gzip
    

    不确定为什么它似乎在没有代理的情况下工作,但最好明确地指定此选项。与大多数浏览器不同,PHP cURL 不会请求压缩,除非您告诉它,但它很容易解决。

    【讨论】:

      猜你喜欢
      • 2012-02-09
      • 1970-01-01
      • 2011-11-09
      • 2018-08-02
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      相关资源
      最近更新 更多