2011-06-20 50 views
13

在我們的網站中,某些頁面使用SSL,但是大多數頁面不會(因爲它們需要通過網頁機器人抓取)。jQuery ajax和SSL?

它幾乎可以歸結到任何頁面上的用戶登錄,也有少數例外是SSL下,

但用戶首先必須從非HTTPS頁面登錄(登錄表單是一種形式從任何頁面的屏幕頂部下降)。

因此,

如何強制通過ajax請求使用SSL?

這更安全嗎?

+7

從何時起,網絡爬蟲不能通過SSL工作? Googlebot/Bing索引就好了。 – vcsjones

+1

好吧,SSL頁面加載速度較慢。他們應該可以抓取,但 – nzifnab

+1

使用iframe。我喜歡iframe。他們很酷,他們讓你解決這樣的問題。有了iframe,你可以做所有你想做的事情。上帝保佑發明了iframe的人。 – Magmatic

回答

11

它違反了JavaScript的同源策略,因爲它沒有看到HTTPS URL與HTTP URL來自同一個源。您可以通過使用JSONP或在Web服務響應中設置Access-Control-Allow-Origin標頭來解決此問題。許多Web服務將被設置爲執行此操作。

+2

這是一個很容易解決的問題,但是,有來自https的ajax javascript文件。 –

+0

你確定這有效嗎?如果您使用的是http:// www.mysite.com',並且該頁面上的表單將加載到https:// www.mysite.com/login的頁面上,則該表單適用於您的JS文件從'https:// www.mysite.com/javascripts'加載?這太有趣了。我可能不得不在下次需要解決此問題時嘗試。編輯:愚蠢的東西拿出了http與https – nzifnab

+0

只要你的ajax調用與html的源代碼一樣,那麼就沒有問題了,所以如果你想要去https://網站ajax調用然後從https://提供頁面。我不確定是否需要這樣做,但如果在測試時出現錯誤,那麼只需將javascript更改爲https即可。根據這篇文章,這應該不重要,這就是爲什麼我沒有在我的答案中提出這個建議。 http://bytes.com/topic/javascript/answers/459071-ajax-https –