2012-03-30 113 views
3

我們使用JQuery AJAX進行登錄。登錄服務發出HTTP 302,其位置是登錄用戶的GET位置,或者(在登錄失敗的情況下),REST終端始終返回未授權的HTTP狀態。與302同時,我們爲JSESSIONID發佈一組cookie。該cookie是一個HttpOnly cookie。jQuery重定向和HttpOnly Cookie

當使用直接的HTTP表單發佈時,重定向工作正常,並且設置了所有內容。在使用JQuery AJAX時,重定向到GET/user/{userId}不起作用,因爲cookie不會在第二次調用時發送。這個失敗的第二次調用應該觸發另一個重定向到auth-failed端點,但實際上沒有。檢查它,我看到第二個電話獲得 「取消」。這是什麼意思,我該如何解決這個問題呢?

+0

類似的問題,以及它是如何在這裏解決:http://stackoverflow.com/questions/199099/how-to-管理一個重定向請求後,一個jquery-ajax-calling – jfriend00 2012-03-30 01:25:08

回答

1

這可能是你犯同源政策的罪魁禍首。您所登錄的域是否與頁面/腳本文件所服務的域相同?

如果沒有,您需要使用CORS(跨源資源共享)來獲取cookie。

您可以瞭解更多有關在這裏:

http://www.html5rocks.com/en/tutorials/cors/

https://developer.mozilla.org/en-US/docs/HTTP_access_control

+0

只是在這裏清理了一個老問題。雖然這個答案並不是完整的答案,但它足夠接近。基本上,我需要做的是檢查JSessionID的完整描述。有兩件事在玩。 1)是,登錄的域名是HTTPS,而GET的域名是HTTP,因此Darren提到了這個問題,因此遇到了CORS問題。 2)是在cookie中存在一個路徑(/ auth vs/rest)問題,導致CORS修復程序無法工作。解決路徑問題終於解決了這個問題。 – 2014-04-02 22:48:16