【问题标题】:How to see http requests in fiddler going to docker container on windows?如何在 fiddler 中查看 http 请求到 windows 上的 docker 容器?
【发布时间】:2017-03-15 11:37:10
【问题描述】:

我在 Windows 配置中使用默认 docker,并运行这样的配置应用程序:

docker run -d -p 8080:80 --name openproject ...

我可以使用浏览器访问应用程序,但在提琴手中我看不到 docker 容器的流量。我看到其他流量,所以我认为浏览器有正确的代理设置。

我已在 docker 设置中将代理设置为提琴手 (http://127.0.0.1:8888),但提琴手仍然无法看到容器中的任何内容。

【问题讨论】:

  • 'fiddler 我看不到 docker 容器的流量' -- 发送流量 /into/ Docker 的客户端应用程序是什么?如果是浏览器,你用的是什么网址?
  • 客户端是浏览器和PowerShell。网址是“localhost:8080”和“127.0.0.1:8080”。在浏览器和 powershell 中工作,虽然提琴手看不到它。
  • Powershell 和 .NET 不会将请求代理到 localhost/127.0.0.1,无论您是否指定代理。绝对应该显示来自 Chrome/Firefox 的请求。见groups.google.com/forum/#!topic/httpfiddler/SsZnGxdxklg
  • 您误会了:.NET 不会代理 URL 以 127.0.0.1localhost 为目标的请求。 (这不是关于代理的 URL,而是关于目标资源的 URL)。 visualstudio.uservoice.com/forums/121579-visual-studio-ide/…
  • 或者,使用localhost.fiddler 作为您用来调用 Docker 容器的地址。 Fiddler 将获取该地址并自动将其转换为localhost

标签: http docker fiddler


【解决方案1】:

如果您想查看退出容器的流量,请将其添加到您的 Dockerfile:

ENV http_proxy "http://host.docker.internal:8888/"
ENV https_proxy "http://host.docker.internal:8888/"

Linux 容器中的 http_proxy 和 https_proxy 环境变量应该是小写的,这与某些 Docker 文档所说的相反 (https://unix.stackexchange.com/questions/212894/whats-the-right-format-for-the-http-proxy-environment-variable-caps-or-no-ca)

host.docker.internal 将您指向主机使用的内部 IP 地址 (https://docs.docker.com/docker-for-windows/networking/)。

8888 端口是 Fiddler 在主机中监听的任何端口。

【讨论】:

    【解决方案2】:

    您可以通过找出 Docker 主机(在 Hyper-V 上运行的虚拟机)的 IP 地址来做到这一点。只需在命令 shell 上运行“ipconfig”即可。

    默认IP地址大概是10.0.75.1(至少在我的机器上)。

    所以不是http://localhost:8080而是浏览到http://10.0.75.1:8080,fiddler会获取流量。

    【讨论】:

    • 还有其他方法吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多