如果我在页面上有来自不同域的图像,并且该图像受HTTP基本身份验证保护,则浏览器将向用户显示身份验证对话框,如下所示:
鉴于该网站是一个论坛,因此包含大量用户生成的内容,恶意用户很容易添加这样的图像,然后可能收获一两个人的登录凭据他们的站点凭据进入对话框.
有没有办法防止在没有使用图像主机白名单的情况下显示凭证提示(不理想,因为它对用户非常严格)或确保图像在允许之前可以访问(可以解决)?
如果您将该crossorigin="anonymous"
属性添加到图像,它将不再提示输入凭据,但这也意味着不会发送任何cookie或缓存凭据(在我的情况下这无关紧要).
但请注意,这会将其限制为仅使用Access-Control-Allow-Origin
标题提供的图像,必须将其设置为*
页面的原点.如果标题被省略或不正确,则不会渲染图像,而是会显示损坏的图像错误.这使得这个解决方案相当无用,但遗憾的是似乎没有替代方案.