2009-08-06 52 views
4

假設:是否可以通過來自non-​​appspot.com域的https以登錄用戶身份在Google App Engine上使用Ajax?

  1. 你有一個網站http://www.example.com重定向到谷歌應用程序引擎(即example.appspot.com)項目;
  2. 您希望通過SSL之間的用戶通信(即https://example.appspot.com);和
  3. 您希望向用戶顯示域爲*://www.example.com(即不是https://example.appspot.com)。

鑑於Google's Appspot HTTPS support僅適用於https://example.appspot.com(即你不能設置https://www.example.com與GAE),我想有一個Ajax解決方案,即:

  1. http://www.example.com提供HTML和Javascript通過HTTP
  2. Ajax請求去通過SSL https://example.appspot.com

我的問題/關心的是:怎樣才能確保用戶登錄到http://www.example.com(通過谷歌的users API)將他們的認證憑證通過Ajax傳遞給https://example.appspot.com

這似乎違反了同一起源策略(這可能是也可能不是Google用戶API的問題),那麼如何才能知道哪些用戶登錄到example.com以獲取Ajax請求example.appspot.com?

想法,意見和輸入是相當讚賞。

謝謝。

布賴恩

回答

2

有辦法解決同一原產地時這兩個網站合作,例如請參閱this post,但只有反覆試驗才能揭示哪些技術可以滿足您的特定要求(可能取決於用戶在其瀏覽器中以及在服務器端實施中設置了安全防護措施的嚴格程度)。

1

使用框架不是很簡單嗎?從yourdomain.com發佈一個包含https://yourapp.appspot.com/內容的完整框架集。

但請注意,或者解決方案存在用戶看到不安全站點而不是安全站點的問題。

+0

Aye - 服務器名稱指示 - http://en.wikipedia.org/wiki/Server_Name_Indication - 可能是真正的答案。 – 2009-08-07 12:46:39

2

您可以嘗試使用JSONP來解決這個問題。但是,JSONP並不像JSON那樣在進行XHR調用時有很好的錯誤恢復。

1

example.appspot.com不會與example.com共享任何cookie - 您無法在example.appspot.com上登錄時識別該用戶。

當然,您可以在example.appspot.com上完全棄用Google身份驗證並實施您自己的方案;您可以將簽名和用戶名添加到您創建的AJAX請求中,並在您的應用引擎應用上驗證該簽名。如果簽名有效,只需接受以認證用戶身份傳入的用戶並假裝他已登錄。

相關問題