- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在构建一个名为 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/
我正在尝试完成一个简单的任务:使用 BASIC Auth 保护我的 ASP.NET WEBAPI(建立在 Katana 之上)。我知道我可以实现自己的中间件或消息处理程序或其他任何东西。但是我想知道这
我试用了位于 http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application/simpl
我使用 Indy TIdHTTP 通过 BasicAuthentication 进行获取请求。 代码工作正常,但如果用户使用正确的登录密码重新输入凭据并再次发送请求,TIdHTTP 在第一个 401
您好,我想打开这个网址 http://3864.cloud-matic.net/从我的 android webview 中,我尝试了很多方法,但该应用程序甚至没有打开 mainActivity。我尝试
我正在构建一个名为 Git Crx 的 Chrome 打包应用程序,顾名思义,它需要使用 HTTPS(智能协议(protocol))向远程 git repos 发送网络请求,但是如果你尝试对一个 ur
为什么以下结果会导致“未经授权”响应: webClient .getAbs("http://hello.com") .basicAuthenticat
我正在尝试调试不断收到的 System.Web.HttpException。它可能与我正在尝试实现的 BaiscAuthentication 自定义 HttpModule 有关。 BasicAuthe
好吧,我正在使用 netcoreapp2.2 ,并且我已将我的项目配置为使用“BasicAuthentication”,一切似乎都很好。 services.AddAuthent
我是一名优秀的程序员,十分优秀!