我希望我的bookmarklet要求用户登录。 这是一个想法......我为用户创建了一个iframe登录,并显示了a / c信息。 但我想从服务器获取一些信息,例如,我想知道用户是否已将此页面添加到我的服务器。所以,我想做一个ajax调用,但由于相同的源策略,我不能通过ajax来做。那么,我如何从iframe获取信息?
故事是这样的:
用户网络 - >用户点击书签 - >如果登录 - >显示“添加到收藏夹”按钮 - >用户单击“添加到收藏夹”按钮,将URL提交给服务器,重新加载服务器。
用户网络 - >用户点击书签 - >如果没有记录 - >显示登录按钮 - >登录成功 - >像以前一样做流程
用户网络 - >用户点击书签 - >如果记录 - >检查网站是否已添加到服务器上 - >没有收藏按钮
如您所见,只有iframe存储登录用户的信息。
答案 0 :(得分:1)
你正在做的事情是不可能的,因为它违反了origin inheritance rules。这样想吧。如果您可以从此时尚的其他网站获取信息,那么您可以阅读CSRF Tokens,或者从他们的Gmail帐户中读取某人的电子邮件。
说到CSRF,大多数登录只是一个带有用户名/密码的简单帖子。您在网站上构建一个与登录所需的POST请求相同的简单<form>
。使用JavaScript,您可以在表单上调用.submit()
,将浏览器重定向到新认证的会话。实际上这就是POST based CSRF exploit works的方式(尽管通常在CSRF攻击中你认为浏览器已经过身份验证。)。
当然,这不适用于所有应用程序,例如OpenID或gmail。这是因为这些服务通常包含随机值以及登录请求。