electron程序,简易处理401 unauthorized授权请求状态码
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
在网络请求中,有个非常神奇的401 unauthorized
状态码,即使是普通的静态图片资源请求,也是可以带上这个401 unauthorized
状态码的,这里就涉及到一个非常猝不及防的网络安全的问题,这里暂作伏笔。在本文中,讨论的是正常使用的401 unauthorized
状态码。具体上来说,就是如何在electron
中,简易处理401
状态码。
本文测试环境:mac
、electron@5.0.7
。
背景描述
正常来说,浏览器处理401 unauthorized
的时候,是会跳出个登录框的,可以输入用户名密码。在细节上来说,不同的浏览器处理的效果,也不一致。当然,也有的浏览器是不做任何处理的。比如在electron
中,就是默认不做处理的。
但是,在实际应用中,还是需要对401 unauthorized
做处理的。本文中的electron
,处理的方式很直接暴力,把用户名密码通过代码的方式,直接发送过去。而没有展示chrome
中的默认可输入的用户名密码对话框。
相关代码
主进程核心代码:
app.on('login', function (event, webContents, request, authInfo, callback) {
callback("<username>","<password>");
});
主进程扩展版本代码:
app.on('login', function (event, webContents, request, authInfo, callback) {
//console.log(request);
//console.log(authInfo);
var url=request.url;
var auth=authInfo.realm;
if (url=="<url>" && auth=="<realm>"){
callback("<username>","<password>");
event.preventDefault();
}
});
在上述代码中,使用app.on('login')
事件,监控到了页面跳转的401 unauthorized
状态。同时,可以通过对request
和authInfo
的分析,匹配不同的已知用户名密码处理逻辑。
注意提交字符串:
- 请替换字符串:
<username>
和<password>
。 - 请替换基本的判断条件,比如:
<url>
和<realm>
。
这段代码存在的问题是:
- 不能判断用户名密码是否正确。
- 用户名密码是写死在代码中的,而不是用户输入的,没有跳出用户名密码登陆框。
相关链接
对于服务器端如何发出这种401
状态,苏南大叔的下面这篇文章,可以提供一种思路:
总结
在本文中,苏南大叔对electron
的401 unauthorized
状态码,进行了简易处理。当然,这个401
状态码,可以做的文章是相当的多。欢迎大家继续关注苏南大叔的相关文章。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。