我嘗試解釋我們的問題。將請求從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地址。很難解釋這個問題。 –