gpt4 book ai didi

javascript - 有没有办法让 chrome 打包的应用程序处理 Http BasicAuthentication

转载 作者:太空狗 更新时间:2023-10-29 14:13:32 24 4
gpt4 key购买 nike

我正在构建一个名为 Git Crx 的 Chrome 打包应用程序,顾名思义,它需要使用 HTTPS(智能协议(protocol))向远程 git repos 发送网络请求,但是如果你尝试对一个 url 进行 XHR 请求返回 401,XHR 将在不使用正常浏览器凭据机制的情况下失败,而以前打包的应用程序将向浏览器显示正常凭据请求 UI。

现在我认为这对我来说确实有意义,因为 Chrome 应用程序应该是独立的应用程序而不仅仅是网页,它们恰好将 Chrome 用作运行时。

但接下来的问题是,Chrome 应用程序现在如何处理使用普通 http 身份验证(返回 401 状态代码)而不是使用 Chrome 应用程序可用的身份验证 API 支持的 OAuth 的网站身份验证?

最佳答案

所以在研究如何写好这个问题的过程中,我自己找到了答案......

首先基于从 XHR 响应中返回 401 作为状态,我可以设置授权 header 进行身份验证,这里是 QUnit 测试用例形式的代码:

  asyncTest("check can do Basic Auth XHR", function() {
expect(1);

var authCreds = "maks:s3cret";
var oReq = new XMLHttpRequest();

function reqListener () {
if (this.status == 200) {
equal(this.responseText.trim(), "the secret", "expect correct res text from server");
start();
} else if (this.status == 401) {
oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.open("get", "http://acme.test.com/auth-test", true);
oReq.setRequestHeader("Authorization", "Basic "+btoa(authCreds));
oReq.send();
}
}

oReq.onload = reqListener;
oReq.open("get", "http://acme.test.com/auth-test", true);
oReq.send();
});

但这是假设该方案是 Basic 但它可能是 Digest 或 NTLM,因此您还需要解析响应 header ...

var authType = oReq.getResponseHeader('WWW-Authenticate');
// do auth based on type...

希望这能帮助将来在同一条船上的其他人......

关于javascript - 有没有办法让 chrome 打包的应用程序处理 Http BasicAuthentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23798304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com