我们在负载均衡器后面的IIS服务器上托管我们的站点。 LB执行SSL卸载,其后面的所有内容都与HTTP进行对话。
问题在于,使用相对URL指向同一Web服务器的服务页面中的AJAX请求正在尝试通过HTTP而不是HTTPS进行连接。这不符合我们的CSP政策,并且由于混合内容通常无法呈现。如果在客户端的浏览器上解析了这些URL,为什么会发生这种情况呢?
目前的网址如下:
url: '/controller/someaction'
在https://host/controller/action等网页上尝试调用http://host/controller/someaction
如果我们使用协议相对路径:
url: '//controller/someaction'
我们完全丢失了主机,并尝试拨打https://controller/someaction
设置当前导致无限重定向循环的upgrade-insecure-requests存在问题。这可能是长期问题的解决方案,但补充说响应标题引入的问题比短期内解决的问题多。可能有一个hack涉及ajaxSetup / beforeSend来修改URL但感觉非常脏。我们可以浏览整个代码库并将URL更改为“https://”+ windows.location.host +'/ controller / someaction',但感觉很脏和耗费时间。
搜索显示,如果网址(当前或请求的)以“/”结尾,则行为可能会有所不同,但实验表明我们在所有组合中都看到相同的行为。
知道为什么会这样吗?我们宁愿不改变SSL卸载行为,但如果它是唯一的选择。
答案 0 :(得分:0)
我最好的猜测是,禁用SSL卸载将为您解决此问题,负载均衡器后面的服务器无法通过HTTPS进行响应,浏览器将阻止HTTP响应和繁荣,就在那里。