2011-03-10 56 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