告诉Web浏览器登录失败,因此它不会要求记住密码

mar*_*hep 10 browser http

我正在为网站编写登录系统,但是当用户获得登录凭据错误时,浏览器(我已经尝试过Firefox和Chrome)仍然会询问用户是否要保存密码.如何告诉浏览器登录失败,以便它知道不要求用户保存错误的凭据?

我已经尝试发送403和500的HTTP状态代码(而不是正常的200),但都没有工作.有办法做我想要的吗?

PS我不想使用HTTP 401身份验证机制,因为我想使用HTML表单登录,而不是某些浏览器对话框.

vcs*_*nes 9

查看Chrome的源代码以确定其工作原理(请参阅参考资料OnPasswordFormsRendered),它正在做一些启发式方法来确定这一点.它似乎这样做的方式是:

  1. 用户提交表单
  2. 等待页面完成加载
  3. 同样的形式仍然可见吗?如果是,则假设由于用户名或密码无效而正在提交表单.

用户登录失败时; 他们应该再次呈现相同的形式.您的"登录失败"屏幕似乎与原始登录屏幕的区别太大,浏览器无法看到它们是相同的格式.

似乎HTTP状态代码对提供保存密码没有影响.

较新版本的Chrome 会考虑 HTTP状态代码.如果状态代码介于400和600之间,则不会提供保存密码.

其他详细信息在相同的源文件中有相当好的文档记录.

  • 整齐.IE10及以下版本没有这样的启发式. (2认同)