JavaScript怎么安全的进行数据获取


这篇文章主要讲解了“JavaScript怎么安全的进行数据获取”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript怎么安全的进行数据获取”吧!fetch可能是我们在 JavaScript 获取数据最常见的方式。但是,我们用fetch获取数据的的代码很有可能存在安全问题:代码示例:上面这段代码虽然简单好用,但存在许很多问题。问题一、缺少“错误处理”当然你可能会说这个问题很好解决嘛,给她添加一个try/catch就好了,遇到错误就会抛出了嘛!代码示例:当然,这样可以确实可以对我们的错误进行处理了。遇到错误的时候也会抛出,但是就算这样写了还是存在很多的问题,对错误的覆盖能力不全面。问题二:无法识别部分错误代码在这里,我们假设user实际上是一个用户对象。我们假设我们得到了响应200。但是fetch不会针对非 200 的状态抛出错误,因此如果你收到了400(错误请求)、401(未授权)、404(未找到)、500(内部服务器错误)或各种其他问题都不会进行错误抛出。那你可能有会说了那我们用个if进行判断然后对不同的错误码进行分类处理不就好了!于是我们就有了下面的代码现在,我们算是基本实现了fetch对数据的安全获取了.但是这样写是很臃肿且笨重的,因为每次都必须重写写一次错误的处理逻辑,而如果是团队开发的话对每个成员的要求会更高,要求每个同事都要按照同样的逻辑来处理请求。而且在可读性方面,也是很差的,维护起来很麻烦。那么我们可不可以换一种更优雅的方式来处理我们的逻辑代码呢?我们可以使用throw来处理我们的不同的错误响,而不是使用switch/case.但是我们还剩下最后一个问题——就是当我们需要处理错误时,我们丢失了很多有用的上下文。我们无法在 catch 块中访问,因此查看处理错误时我们上并不知道响应的状态代码或错误的详细信息。这会让我们debug变的很困难,很难去查错。那我们要怎么才能拿到error的上下文呢?最好的方法可能是创建我们自己的自定义错误类,并且在错误类中转发响应的详细信息:代码:现在我们保留状态代码等error信息,这样可以让我们的用户了解错误的原因的也能让我们更好的处理错误。例如,我们可以提醒用户500我们遇到了问题,并可以让客户联系我们的进行解决。或者如果状态为401,则他们当前未授权,可能需要重新登录等。虽然上面的代码可以解决我们的所有问题,但是它仍然存在一个不稳定性,就是代码的健壮性取决于开发人员的个人素质和能力。我们的的请求安全并不能等到统一的保障。我们可以对我们代码进行封装,然后使用时进行导出引用就行了然后我们可以按下面的方式去使用它:在我们的封装代码中,最好确保有一个统一的方式来处理错误。因为这里面包括给用户的警报、日志记录等。当然如果我们的水平还没有达到可以自己封装一个完善的请求类时我们也可以去网上使用一些别封装好的请求类,axios是一个非常流行的 JS 请求数据的库,它已经帮我们解决了上面我们探讨的几个问题。我觉得 Axios 的唯一缺点是包太大,如果我们只是在一个项目获取一个很简单的数据时使用axios需要引入一个11kb的包,,反而会使我们的项目变的臃肿。如果你觉得项目的大小对你更重要是你可以选择RedaxiosRedaxios使用有 Axios 一样的 API,但不到大小却不到[1kb]还有一个不错的选项是Wretch,它是 Fetch封装成的一个非常小的包,和 Redax免费云主机域名ios 一样。Wretch 的特别之处在于它在很大程度上还原了原生的数据请求方法,但是它帮我们封装了很多的错误处理代码。感谢各位的阅读,以上就是“JavaScript怎么安全的进行数据获取”的内容了,经过本文的学习后,相信大家对JavaScript怎么安全的进行数据获取这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: JavaScript原始包装类型实例分析

这篇文章主要讲解了“JavaScript原始包装类型实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript原始包装类型实例分析”吧!引出问题:如下一段简单的代码,变量a赋予了字符串类型原始值…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/26 22:31
下一篇 05/26 22:31

相关推荐