2012-04-25 64 views
3

在我們網站上,有些頁面是SSL,而另一些則是非SSL。

例如:

http://www.example.com/search/patients 
https://www.example.com/patients 

現在我正在尋找患者http://www.example.com/search/patients頁面,並通過jQuery $.ajax功能和dataType=json發送服務器請求https://www.example.com/patients。我無法獲取數據。

問題:

  1. 我應該使用jsonp當我們從httphttpshttps請求http同一臺服務器上?

  2. 如果我使用SSL的兩個URL,然後將其與dataType=json只工作

感謝

+1

我猜AJAX請求可以通過相對路徑而不是絕對路徑。 – 2012-04-25 08:19:03

回答

5

由於Same Origin Policy你的Ajax請求只允許使用: 域名,應用層協議,以及(在大多數瀏覽器)端口 HTML文檔的數量運行腳本是相同的

在你如果應用層協議不同,那就是爲什麼你的腳本失敗

可能的解決方案是:

  • JSONP,它必須由服務器

  • CORS,這是一個更「優雅」和乾淨的解決方案來提供,但尚未完全支持IE(IE7不支持它,IE8有一些限制)

3

如果您使用這兩個URL它應該工作SSL。同樣,@Waqas Raja建議,最好使用相對的URLS。

例如$.ajax({url: '/search/patients'})

1

你需要使用CORS,代理或JSONP來獲取內容f從一個不同的起源。更改方案(從http到https或其他方式)正在改變原點。

將數據從安全服務器提取到不安全的頁面中,消除了使用SSL的諸多好處。

如果您通過SSL獲取頁面和數據源,那麼您可以使用普通的JSON,而不會引入這些安全問題。

相關問題