【问题标题】:Set up an HTTP proxy to insert a header设置 HTTP 代理以插入标头
【发布时间】:2010-09-14 08:14:17
【问题描述】:

我需要测试一些与我不想修改的客户端的 HTTP 交互。我需要测试的是当客户端的请求包含某个静态标头时服务器的行为。

我认为运行此测试的最简单方法是设置一个 HTTP 代理,在每个请求中插入标头。最简单的设置方法是什么?

【问题讨论】:

    标签: apache proxy http-headers proxypass


    【解决方案1】:

    我在我的开发环境中通过将端口 80 上的 Apache 配置为端口 8080 上的应用程序服务器的代理来执行类似的操作,并使用以下 Apache 配置:

    NameVirtualHost *
    <VirtualHost *>
       <Proxy http://127.0.0.1:8080/*>
          Allow from all
       </Proxy>
       <LocationMatch "/myapp">
          ProxyPass http://127.0.0.1:8080/myapp
          ProxyPassReverse http://127.0.0.1:8080/myapp
          Header add myheader "myvalue"
          RequestHeader set myheader "myvalue"   
       </LocationMatch>
    </VirtualHost>
    

    请参阅 LocationMatch 和 RequestHeader 文档。

    这会将标头 myheader: myvalue 添加到发送到应用程序服务器的请求中。

    【讨论】:

    • 它还会将 myheader: myvalue 添加到响应标头中。 Apache mod_headers 的完整文档:httpd.apache.org/docs/current/mod/mod_headers.html
    • @Fred:那么我们如何限制标头仅出现在代理请求中?
    • Well Header 被添加到响应中,而 RequestHeader 被添加到代理后面的服务器请求中。我这样做是为了确保 settings.xml 查询永远不会被其他代理缓存,我做到了: SetEnvIf Request_URI "\settings.xml$" object_is_settings_xml Header set Cache-Control "no-cache, no-store" env =object_is_settings_xml 标头集过期“Thu, 01 Jan 1970 00:00:00 GMT” env=object_is_settings_xml 标头集 Pragma “no-cache” env=object_is_settings_xml
    • 如果您收到关于 RequestHeader 无法识别的错误,请确保 mod_headers 已启用,例如a2enmod headers(然后重新加载 Apache)。
    【解决方案2】:

    您还可以安装 Fiddler (http://www.fiddler2.com/fiddler2/),它非常易于安装(例如比 Apache 更容易)。

    启动后,它将自己注册为系统代理。然后打开“规则”菜单,选择“自定义规则...”打开一个 JScript 文件,让您可以自定义请求。

    要添加自定义标题,只需在OnBeforeRequest 函数中添加一行:

    oSession.oRequest.headers.Add("MyHeader", "MyValue");
    

    【讨论】:

      【解决方案3】:

      我会尝试tinyproxy。事实上,最好的办法是在其中嵌入一种脚本语言……听起来对Lua 来说是一项完美的工作,尤其是在看到它对mysqlproxy 的工作效果之后

      【讨论】:

        【解决方案4】:

        我的同事为此使用了Burp(“用于攻击和测试 Web 应用程序的交互式 HTTP/S 代理服务器”)。您还可以使用Fiddler(“HTTP 调试代理”)。

        【讨论】:

          【解决方案5】:

          使用http://www.proxomitron.info并设置你想要的标题等

          【讨论】:

            【解决方案6】:

            我没有使用代理,而是使用 Firefox 插件 "Modify Headers" 插入标题(在我的情况下,使用单点登录来伪造登录,以便我可以作为不同的人进行测试)。

            【讨论】:

            • Afaik 这个问题不是特定于 firefox 的。
            • @peterh 不,不是,但如果您对可以使用的浏览器很灵活,那么向 Firefox 添加插件比设置 Apache 实例要容易得多。
            【解决方案7】:

            如果您的系统上有 ruby​​,那么使用 Sinatra 的小型 Rub​​y 代理怎么样(确保安装 Sinatra Gem)。这应该比设置 apache 更容易。代码可以找到here.

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-10-21
              • 2016-08-18
              • 1970-01-01
              • 2011-06-16
              • 1970-01-01
              • 1970-01-01
              • 2012-08-06
              相关资源
              最近更新 更多