2012-07-30 76 views
1

由於跨域問題,我決定嘗試新的解決方法來檢測我的兩個域之間的會話。我認爲這個過程會起作用,因爲我沒有嘗試設置任何cookie,並且它在Chrome和Firefox中運行良好,但在IE9中沒有。Asp.net jquery ajax request.cookies跨域

我已經在調試模式下進行了調試,並且我請求的aspx頁面沒有訪問它自己的Request.Cookies,而當我使用chrome時,它確實沒有。

的過程是:

在域1,(一個asp.net MVC應用程序)在用戶登錄作爲該登錄過程的一部分,一個cookie被設置在該域。如果我在這臺服務器上打了一個測試頁,我可以看到cookie已經設置好了。

在domain2(一個asp.net webforms應用程序)上,我向domain1上的該測試頁發出了一個jQuery.ajax請求,該請求旨在檢查cookie並返回一個加密字符串。

在通過ajax調用此請求期間逐句通過時,我可以看到request.cookies集合未被填充。令人沮喪的是,User.Identity.IsAuthenticated是真的,但我無法訪問我設置的cookie。

這只是整個跨域安全性的另一個例子嗎?對我來說,似乎甚至使用jsonp和所有其他各種頭文件等進行ajax調用,在這種情況下不會有所幫助,因爲它看起來不僅僅是這樣嗎?

回答

1

你的假設似乎是正確的。如果JQuery連接到與頁面所在的域不相同的域,默認情況下不會發送Cookie。

您可以嘗試使用JQuery API中的xhrFields執行跨域調用。

$.ajax({ 
url: a_cross_domain_url, 
xhrFields: { 
    withCredentials: true 
} 
}); 

http://api.jquery.com/jQuery.ajax/

希望幫助!