0

例如,当我在 Firefox 中提交带有密码字段的表单时,浏览器会询问我是否希望它为我记住用户名和密码。例如,在 Firefox 中登录 gmail,我会在弹出窗口中收到此消息:

您想记住 google.com 上“markamery@gmail.com”的密码吗?

带有“记住密码”、“现在不”和“从不用于此站点”选项。

我正在开发一个插件,用于在多个网站上提供服务。用户将在我们的mysite.com和我们的客户上拥有一个帐户,例如someclient.com,在他们的网页上包含一个 Javascript 脚本,该脚本mysite.com将我们的内容和功能添加到他们的页面,包括用户可以用来登录我们网站的登录表单。(登录过程的实际机制都是用 iframe、AJAX 和 HTML5 处理postMessage的,这并不重要)。

当用户登录我们的插件时someclient.com,我希望他们的浏览器提示他们记住密码mysite.com,当他们看到我们的登录表单时someotherclient.com,我希望使用他们输入的相同用户名和密码自动完成someclient.com。但是,目前,他们会收到提示询问

您想记住 someclient.com 上“yourname”的密码吗?

相反,这不是我想要的。

我想要的有可能吗?如果有,怎么做?

4

1 回答 1

0

将表单放入 iframe 将导致 Firefox 至少将任何存储的密码与 iframe 的域相关联,而不是与主页的域相关联。您可以使用postMessages与 iframe 进行通信。

只需让 iframe 捕获表单提交事件,将表单内容序列化,并通过 postMessage 发送到主窗口;然后主窗口可以从消息中获取表单的内容并使用 Javascript 处理它。

当然,即使在简单的情况下,这也是一个相当丑陋的 hack,如果 iframe 中的内容与主页中的内容或代码之间存在复杂的交互,那么尝试通过 postMessage 正确处理它们可能会导致快速下降到疼痛和意大利面。如果跨域密码自动完成的价值很低,并且主要问题是记住密码消息带有错误的域名是不好的,那么考虑简单地完全禁用该功能,而不是用黑客来破坏你的代码库来修复它。您可以通过将表单的“自动完成”属性设置为“关闭”来禁用它,如下所述:禁用浏览器“保存密码”功能

于 2013-06-07T16:47:58.657 回答