2011-07-29 20 views
2

我正在用Ruby on Rails構建一個應用程序。該應用程序是一個Javascript應用程序,通過來自api應用程序的JSON調用獲取數據。它還爲應用程序本身和api提供跨域身份驗證。如何通過使用cookie身份驗證的Javascript獲取JSON數據?

我通過製作具有相同祕密會話密鑰和相同名稱的應用程序cookie來處理跨域身份驗證,例如_app_an_api_session

現在,我會寫下senario,當它失敗時我會告訴你。

的應用領域是domain.local的API域api.domain.local

讓我們說api.domain.local/me是受保護的頁面。當我打開它我得到unauthenticated

當我去申請和sign in並再次去api.domain.local/me,我可以看到它的數據。 [通過] [它也適用於相反的行動]。

的問題是,例如,sign in後我想在domain.local加載api.domain.local/me內容[JSON數據],我可以在該status(canceled)控制檯中看到。

另外爲了調試的緣故。我試圖在api的每個請求上看到env變量。所以,當我直接訪問api.domain.local/me時,我可以在控制檯中看到cookies散列,如果通過實際應用程序查看,則根本沒有cookie /會話。

那麼,如何才能做到這一點是可能的呢?

回答

0

您的問題是阻止不同域和子域之間通信的同源策略。您可以通過使用代理JSON-P或external proxy解決此問題。

+0

跨域cookie可以正常工作,因爲兩個應用都共享一些auth cookie。問題是獲取'/我'的數據,需要通過Javascript授權 – amrnt

+0

剛剛看到,給我一秒來更新答案。 – marc

+0

它不起作用。我可以加載不需要認證的'/ user/2'。但我可以加載需要授權的'/ me'。 – amrnt

相關問題