在docker容器中运行的浏览器需要对在我们的网络中的测试API上运行的登录服务进行POST。该服务非常挑剔POST可以来自哪里因此它拒绝POST,因为它来自host.docker.internal
而不是localhost.company.com
。
我不太可能将host.docker.internal
添加到白名单中。
如果浏览器在我的本地计算机上运行,POST将正常工作,但当浏览器在本地计算机上的容器内运行时,POST将失败。
我试过docker run --add-host='localhost.mycompany.com:127.0.0.1'
和docker run --add-host='localhost:127.0.0.1'
,两个都没有用过。后者似乎很傻;它在黑暗中是一种射击......
一个可能的进一步复杂性:浏览器在Docker容器内的testcafe中运行,所以我的请求将有像'Origin: http://172.17.0.2:1337'
'Referer: http://172.17.0.2:1337/WBrtZV38p/http://host.docker.internal:3000/app/'
这样的标题
如果没有在我的本地机器上制作某种代理,有没有办法从docker容器发出POST似乎来自我的本地机器?
使用docker run --network host ...
在主机操作系统网络空间中启动容器 - 容器将直接在本地计算机的网络中运行。但是您将失去容器网络隔离,因此您应该检查此方法的安全性。