javascript - 避免在 chrome 扩展中弹出 HTTP 身份验证(摘要)

标签 javascript ajax google-chrome google-chrome-extension http-authentication

我目前正在开发一个 chrome 扩展,我需要访问一些受 http-auth 保护的资源 (webdav)。 HTTP 身份验证使用(在最佳情况下)摘要身份验证。

我可以使用 https://login:password@domain.tld/path/to/ressource 直接在 ajax 请求中进行身份验证形式。

问题是:如果登录名/密码错误,我无法获得 401 状态(未授权),Chrome 会弹出常规身份验证对话框。我不想这样做,因为它会让用户感到困惑,而且我无法从此处保存凭据。

编辑:我遇到的另一个用例是:我想检查资源是否受密码保护,而不是尝试提供凭据以实际访问它。

关于如何在不弹出 Chrome 的授权框的情况下捕获 401 的任何想法?

最佳答案

Google Chrome 团队在 Google Chrome 22 中实现了 onAuthRequired 事件,因此现在可以检测何时需要 HTTP 基本身份验证。

事实上,我写了一个扩展,它使用 onAuthRequired 事件自动发送 HTTP 基本身份验证凭据。

可在官方 Google Chrome 网上商店免费获得: https://chrome.google.com/webstore/detail/basic-authentication-auto/dgpgkkfheijbcgjklcbnokoleebmeokn

onAuthRequired 事件的使用示例:

sendCredentials = function(status)
{   
    console.log(status);
    return {username: "foo", password: "bar"};
}

chrome.webRequest.onAuthRequired.addListener(sendCredentials, {urls: ["<all_urls>"]}, ["blocking"]);

您需要向 list 文件添加正确的权限才能使用 onAuthRequired。

"permissions": [ "http://*/*", "https://*/*", "webRequest", "webRequestBlocking", "tabs" ],

下载扩展并检查源代码以获得更好的方法。

即使请求是从另一个扩展发起的,它也应该工作。

关于javascript - 避免在 chrome 扩展中弹出 HTTP 身份验证(摘要),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902411/

相关文章:

javascript - 表单未使用 Angular 清除 $.ajax 成功函数中的值

javascript - Google Chrome - GET ajax 请求失败

google-chrome - Chrome开发人员工具-浏览器大小?

javascript - 在带有 if 语句的函数中检查某物是否为数字

javascript - NodeJS 和 Socket.IO 如何服务于 socket.io.js

ruby-on-rails - rails 通过 AJAX 渲染所有 Action - 有没有简单的方法?

javascript - chrome.runtime.getManifest() 未定义

html - 即使设置了值,Chrome 和 Opera 也会在日期输入中显示占位符

javascript - 安装和升级基于 Firefox Add-on-SDK 的扩展时强制重新启动

javascript - aframe:如何从 Canvas 中获取像素