Javascript 如何在Safari中清除身份验证基本缓存

Javascript 如何在Safari中清除身份验证基本缓存,javascript,safari,basic-authentication,Javascript,Safari,Basic Authentication,如何清除Safari中的基本身份验证?我的代码适用于Chrome、Firefox和其他浏览器。但不是狩猎 我想要一个没有浏览器登录对话框的注销(纯javascript应用程序) 服务器端: if(isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] == '_logout') { (new \App\Http\Response()) ->setHeader(

如何清除Safari中的基本身份验证?我的代码适用于Chrome、Firefox和其他浏览器。但不是狩猎

我想要一个没有浏览器登录对话框的注销(纯javascript应用程序)

服务器端:

if(isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] == '_logout') {
          (new \App\Http\Response())
              ->setHeader('WWW-Authenticate', 'Basic realm="app"')
             ->send(401, 'Unauthorized');
    }       
它与Firefox&co完美配合,无需浏览器登录提示。 但在我的应用程序中点击注销按钮后,我从Safari浏览器中获得了一个登录对话框

当然,如果我不发送WWW-Authenticate头文件,它会起作用。但是我们没有真正的注销,因为浏览器不会清除auth缓存。它会在每个请求中发送带有“_logout”用户的授权头,直到我再次使用新用户登录

如果不发送WWW-Authenticate,我就无法覆盖授权头。浏览器将始终采用缓存的值。例如,我使用基本身份验证登录,然后注销(服务器只发送一个401而不使用WWW身份验证)。好的,现在我想使用承载令牌登录,但这不起作用,因为浏览器使用旧的缓存基本字符串

Da。。狩猎

if(isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] == '_logout') {
          (new \App\Http\Response())
              ->setHeader('WWW-Authenticate', 'Basic realm="app"')
             ->send(401, 'Unauthorized');
    }