2017-05-04 95 views
0

我们后面的负载平衡器的IIS服务器上托管我们的网站。 LB执行SSL卸载,其后面的所有内容都会与HTTP进行通信。AJAX调用与相对URL访问http一个网站通过HTTPS提供

的问题是,在使用相对URL而此时回到同一Web服务器所服务的页面AJAX请求正在尝试通过HTTP进行连接,而不是HTTPS。这违反了我们的CSP政策,并且由于混合内容通常无法呈现。如果这些URL在客户端的浏览器上解析,为什么会发生这种情况?

的URL目前的样子:

url: '/controller/someaction' 

其中一个页面上,如https://host/controller/action试图调用http://host/controller/someaction

如果我们使用协议的相对路径:

url: '//controller/someaction' 

我们失去主机完全和它试图调用https://controller/someaction

设置当前导致无限重定向循环的upgrade-insecure-请求存在问题。这是对这个问题的长期解决方案,但补充说响应头引入了比短期内解决的问题更多的问题。可能有一个涉及ajaxSetup/beforeSend的修改URL,但感觉真的很脏。我们可以遍历整个代码库,并更改网址的“https://” + windows.location.host +“/控制器/ someaction”,但那种感觉脏耗时。

一个搜索显示的行为可能会有所不同,如果该URL(电流或要求)以“/”结束,但实验表明,我们看到了所有组合相同的行为。

任何想法为什么会发生这种情况?我们宁可不改变SSL卸载行为,但如果它是唯一的选择,则可以。

+0

看看其他一些答案,他们建议由于某种原因添加斜线,可能至少值得一试。所以改变你的网址为''/ controller/someaction /'' – George

+0

我提到过我没有成功尝试过。不过谢谢。 – JRoughan

+0

对不起,我没有完整阅读这个问题 – George

回答

0

我最好的猜测是,禁用SSL卸载将为您解决这个问题,负载均衡器后面的服务器无法知道用HTTPS做出响应,浏览器将阻止HTTP响应和繁荣,在那里。

相关问题