避免在Chrome扩展程序中使用HTTP身份验证弹出窗口(摘要)

Joc*_*nde 11 javascript ajax google-chrome http-authentication google-chrome-extension

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

我可以使用https:// login:password@domain.tld/path/to/ressource表单直接在ajax请求中执行auth .

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

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

关于如何在不弹出Chrome的auth框的情况下抓住401的任何想法?

Jua*_*ago 4

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"]);
Run Code Online (Sandbox Code Playgroud)

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

"permissions": [ "http://*/*", "https://*/*", "webRequest", "webRequestBlocking", "tabs" ],
Run Code Online (Sandbox Code Playgroud)

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

即使请求是从另一个分机发起的,它也应该起作用。