2013-01-31 53 views
1

我們正試圖在頁面上創建一個控制ajax的簽名。事情是,我們希望它是安全的,所以當你在我們的主頁上時,f.e. http: //page.com並且您想要登錄,那麼使用您的登錄名和密碼的ajax請求(使用jquery)將會轉到https: //page.com/sign-in/ action。設置一個來自https站點上的cookie

事情是,通常我們不能發送這樣的請求,因爲跨域安全。在我們的singnin行動中,我們把標頭Access-Control-Allow-Origin的值指向我們的http站點url,因此它可以發出登錄請求。

這工作得很好,除了一個非常重要的問題:

HTTPS站點返回用戶面板預示着我們將其替換登錄表單。它還會返回一個cookie(典型的.net認證cookie)。該cookie不想在我們的網頁上解決 - 我想,不知怎的,我們的http頁面不想接受來自https操作的cookie ...

當我們在其他某個https站點上,並嘗試登錄時,工作正常,cookie已設置。

我們該如何避免這種情況?我們如何允許https操作在http網站上設置cookie?

這仍然是相同的域名,只是不同勢協議..

+1

同域和不同協議=跨域請求。你爲什麼不只是使主頁https? –

+0

我想在我的門戶網站的每個頁面上都有登錄表單,但我認爲不應該將https放在所有這些表單上......他們中的大多數根本不需要安全性... –

+1

@ŁukaszW.pl沒有理由*不僅僅是讓整個網站成爲'HTTPS'。開銷是微不足道的,並且它更簡單(例如對於這種情況,例如) –

回答

0

由於一些用戶表示,它被證明是一個不安全的溶液。 Quentin指出,這對於中間人攻擊來說是容易受到攻擊的,所以解決方法是將整個頁面放在https域上,而不要根據內容的類型對協議進行分類。

相關問題