好的,我正在使用笔进行负载平衡。我的apache服务器将远程IP视为负载均衡器的IP。我需要apache服务器能够出于各种原因查看客户端的IP地址。我可以使用X-Forwarded-For从非加密页面中获取,但它不是SSL页面的一部分......
所以,不知道Ajax,我在想。我可以使用ajax从非加密页面中拉出X-Forwarded-For,并将其设置为客户端的变量吗?我知道这是可能的,我只是想知道是否有人这样做了,这是否会导致浏览器出现安全性错误。
我认为我可以将它们重定向到非ssl页面,然后将IP放入cookie中,然后返回到SSL页面,但我认为这也很好。
无论如何,获取ip到脚本的其他方式也会起作用。我试过http://stderr.net/apache/rpaf/,但它也不知道IP。
答案 0 :(得分:0)
AJAX受同源策略的限制,不同的协议被认为是不同的来源,因此您无法从HTTPS页面发出HTTP AJAX请求。
尝试通过其他方式进行此操作可能会导致浏览器警告混合安全和不安全的内容。
将IP放在HTTP页面上的cookie中(理想情况下签名或存储在cookie引用的服务器端会话中)可行,但它不如读取SSL会话的实际IP安全(因为攻击者可以操纵HTTP cookie) ,并且您不能设置仅HTTPS的cookie。)
另一个解决方案是在负载均衡器处结束SSL并将其作为HTTP流量转发给Apache。
另一种方法是使用较低级别的负载平衡 - NAT - 保留源地址。