Linux Docker环境下调用远程Windows MSEdgeDriver请求被拒绝如何解决
MSEdgeDriver远程访问Host头拦截问题解决方案
问题根因
你遇到的报错是MSEdgeDriver 90+版本新增的Host头校验机制导致的:--whitelisted-ips参数仅管控源IP的访问权限,不会绕过Host头校验;你之前配置的allowed-origins是用于校验跨域请求的Origin头,和当前报错的Host头校验无关,所以配置后不生效。
解决步骤
- 调整启动命令,新增Host头白名单参数
正确的启动命令如下,新增--allowed-hosts="*"参数允许所有Host头的请求,也可以替换为你实际访问时使用的IP/域名缩小权限范围:msedgedriver.exe --whitelisted-ips="" --allowed-hosts="*"
注意Windows命令行下如果空参数不生效,可以把--whitelisted-ips=""替换为--whitelisted-ips=*。 - 校验pfSense转发规则
检查防火墙的端口转发配置,确认没有篡改请求的Host头、没有额外插入异常的Origin头,NAT规则不会修改请求的原始目标地址信息。 - 分层验证连通性
先跳过防火墙,在同一局域网内的设备直接访问Windows Server的9515端口,执行命令curl http://<Windows虚拟机内网IP>:9515/status验证:- 如果返回正常的驱动状态JSON数据,说明驱动配置正常,问题出在防火墙转发环节,排查pfSense的规则即可
- 如果仍报相同错误,检查启动参数是否正确生效,可执行
msedgedriver.exe --help确认所有参数被正确识别
- 校验Robot Framework连接配置
确认SeleniumLibrary中配置的remote_url地址和你允许的Host地址匹配,如果使用域名访问就将域名加入--allowed-hosts列表,使用公网IP就将公网IP加入列表。
内容的提问来源于stack exchange,提问作者Chawki
相关产品推荐
相关产品推荐

