调用 IIS 网站时 Selenium/Docker 容器中缺少 HttpOnly cookie

Missing HttpOnly cookies in Selenium/Docker container, when calling IIS website

不确定这是 Seleniumchromedriver、Docker 还是特定于 IIS 的。我在我的 PC 上使用 Docker for Windows(测试版,使用 Hyper-V)。在同一台 PC 上,我正在使用 IIS 为网站提供服务。

当使用 selenium/standalone-chrome-debug:2.53.0 图像在该网站上 运行 进行测试时,容器中的 Chrome 实例没有收到任何 HttpOnly-cookies(我已经使用 VNC 检查).它确实得到了正常的饼干。这意味着 CSRF 令牌消失了,并且尝试 POST 表单失败。

如果我在我的 PC 上访问该网站,工作正常。我的 PC 和容器在它们的 HOSTS 文件中都有该网站的域。

容器中的正常流量 (HTTP GET) 工作正常,唯一的区别(到目前为止)是它不获取 HttpOnly-cookies。

编辑:当我打开导航到外部站点时,我确实收到了 HttpOnly-cookie。所以这可能与 Selenium 或 chromedriver 无关。

这可能与在我的主机 PC 上使用 VPN 有关,我需要它来访问本地 IIS 网站。

事实证明这不是 Docker/Selenium/chromedriver/VPN 的问题。

我们有一个请求过滤器,它向随响应发送的 cookie 添加安全标志,但仅限于来自远程机器的请求。 Docker 容器在这种情况下被视为远程机器。

在我的本地 IIS 上进行测试时,我通过 HTTP 执行此操作,这意味着不会发送安全 (HTTPS) cookie。