2011-03-10 55 views
0

我正在開發應用程序,它通過Ajax POST方法將許多跨域的事情保存到我的服務器/應用程序中。我需要找到一個解決方案如何發送POST並驗證發送它的用戶是否已在我的網站上簽名並將其保存到數據庫。跨域Ajax POST和用戶驗證

我很確定我需要Chrome,Firefox擴展來做到這一點,因爲我需要將我的js嵌入到用戶瀏覽的每個頁面上。事情是我不知道從哪裏開始,它應該如何工作。我可以設置代理來使JSON POST工作,但我不知道如何驗證用戶是否在我的網站上簽名。

我是否應該通過Chrome API從瀏覽器中獲取我的用戶的Cookie,並將它發送到POST並在Django中驗證Cookie /會話?你有什麼建議?

謝謝你的幫助。我欣賞每一個提示。

回答

1

當用戶登錄http://yourserver.com時,您可以設置一個永久性cookie來識別他。 (見在Django SESSION_EXPIRE_AT_BROWSER_CLOSECOOKIE_AGE變量)

然後,當他從嵌入其他網站的任何JS從yourserver.com域,餅乾此域自動發送,你可以檢查你的Django側的cookie存在並有效並給出好的JS。

由於跨域問題,您最好使用表單POST作爲AJAX的替代方法,因爲它不受安全限制。那麼你可以play with iframes and javascript to make both domains communicates

要將JS嵌入到其他網站,您可以使用瀏覽器擴展或簡單的bookmarklet,當用戶從任何網頁點擊該代碼時,該代碼將在當前頁面加載代碼。

我的2美分;

+0

當JS託管在CDN上的情況如何?這將是高負載的應用程序,這將產生大量的請求。 – tvavrys 2011-03-10 10:08:50

+0

您可以在CDN擁有主要腳本,並且只需動態提供可變部分。 – jujule 2011-03-10 11:29:39

+0

3腿OAuth呢?我的JS會與Chrome,Firefox擴展協議,如果擴展OAuth沒有在服務器端進行授權,他們將不得不最終登錄並授權。是否可以通過我的(授權)擴展將數據發送到我的服務器? – tvavrys 2011-03-10 11:44:41