我尝试解释我们的问题。将请求从https发送到本地http服务器
我们正在编写一个小工具(与Java 1.8和Jetty +泽西岛),它提供了一个休息服务器用于保存数据(文档,...)直接硬盘驱动器或打印文档。
该工具可以在本地计算机(本地主机)上或本地网络中的其他设备上启动/访问。
问题是你不能从HTTPS页面请求发送到当地的工具,如果它不是SSL加密。
我们需要的是我们工具的ssl证书。
但问题是,我们不知道在哪个设备/ IP地址客户要运行该工具,你必须绑定一个域名的SSL证书。
我们可以创建SSL证书,并与(例如)tool.domain.com绑定,但该工具可以在127.0.0.1以及对192.168.10.2或类似的东西运行。
所以我的问题是,有没有办法(以编程方式)“绕过”这堵墙?
一“的方式”将添加一个条目到本地主机的文件,但我们要为我们的客户可能的努力少,你不能设置主机上的非扎根移动设备条目。
编辑:添加了一些代码片段。
ServletContextHandler context = new ServletContextHandler(server, "/*");
// vhosts
// context.setContextPath("/*");
context.setVirtualHosts(new String[]{
"127.0.0.1",
"192.168.6.195",
"localhost",
"tool.domain.com"
});
在那里,我们添加虚拟主机到码头服务器。我们为我们的域名拥有自签名证书(用于测试)。
我们要存档是这样的:
这里是一些JS-代码进行测试/可视化:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://127.0.0.1:7331/test/echo/test1111');
xhr.setRequestHeader('Host', 'https://tool.domain.com');
xhr.send();
而Chrome(我认为其他的浏览器,太)阻塞主机头
如果从HTTPS的,它最好是到https –
我们希望将SSL证书添加到我们的工具,但问题是目标。目标可以有每个IP地址。很难解释这个问题。 –