2009-08-31 27 views
5

好吧,我正在使用筆進行負載均衡。我的apache服務器將遠程IP看作負載均衡器的IP。我需要Apache服務器能夠以各種原因查看客戶端的IP地址。我可以使用X-Forwarded-For從非加密頁面中獲取它,但它不是SSL頁面的一部分...ajax/ssl/X-Forwarded-For

所以,不知道Ajax,我想知道。我可以使用ajax將X-Forwarded-For拉出非加密頁面,並將其設置爲客戶端的變量嗎?我知道這是可能的,我只是想知道是否有人這樣做,這是否會導致瀏覽器出現安全錯誤。

我以爲我可以將它們重定向到一個非ssl頁面,然後將IP放入一個cookie中,然後返回到SSL頁面,但我認爲這也太過分了。

無論如何,其他方式獲得ip的腳本也將工作。我試過http://stderr.net/apache/rpaf/,但它不知道IP。

回答

0

AJAX受同源策略限制,不同的協議被認爲是不同的來源,所以你不能從HTTPS頁面發出HTTP AJAX請求。

嘗試通過其他方式進行嘗試可能會導致瀏覽器警告混合安全和不安全的內容。

將IP置於HTTP頁面上的cookie中(理想情況下簽名或存儲在由cookie引用的服務器端會話中)將會起作用,但它不會像讀取SSL會話的實際IP那樣安全(因爲攻擊者可能會操縱HTTP Cookie,並且您無法設置僅HTTPS cookie)。

解決此問題的另一個方法是在負載平衡器處結束SSL並將其作爲HTTP流量轉發給Apache。

另一種方法是使用較低級別的負載平衡--NAT--保留源地址。