相关分享
以非阻塞方式执行一个函数
用过 skynet 的应该都碰到过:当我们在服务中不小心调用了一个长时间运行而不返回的 C 函数,会独占一个工作线程。同时,这个被阻塞的服务也无法处理新的消息。一旦这种情况发生,看似是无解的。我们通常认为,是设计问题导致了这种情况发生。skynet 的框架在监测到这种情况发生时,会输出 maybe in an endless loop 。
如果是 Lua 函数产生的死循环,可以通过发送 signal 打断正在运行运行的 Lua 虚拟机,但如果是陷入 C 函数中,只能事后追查 bug 了。
那么,如果我原本就预期一段 C 代码会运行很长时间,有没有可能从底层支持以非阻塞方式运行这段代码呢?即,在这段代码运行期间,该服务还可以接收并处理新的消息?
让 Nginx 将 HTTP 请求转发到 HTTPS 安全模式
在某次博主的交流讨论时,忽然间发现自己站点原定让 HTTP 转发 HTTPS 的支持功能,实际上并不没有生效。如果是直接输入域名访问的话,那么会出现 400 的错误页面。当初为了让全站支持 HTTPS 也是耗费了不少精力,没想到却是这个结果。
利用HAR文件查看和诊断网络请求
HAR(HTTP 归档)是多种 HTTP 会话工具用来导出所记录数据的 一种文件格式。这种格式基本上是 JSON 对象,并具有一组特定的字段。请注意,并非所有 HAR 格式的字段都是必填字段, 很多时候,部分信息不会保存到文件中。
浅析跨站请求伪造(CSRF)攻击
狭义的CSRF攻击就是指让Client在被Server认证的情况下去访问精心设计的恶意链接完成攻击。广义的CSRF攻击,可以是通过一些手段猜测出请求参数以及用户认证信息(如果需要认证的话),这样Server就会将其识别为合理请求。
使用AbortController abort中断原生fetch或axios请求
AbortController可以用来终止一个或多个Web请求,大致看了下,此API可以终止fetch请求,任意响应主体和流。
日常开发,用的最多的就是对 fetch 请求的终止,由于axios(知名HTTP 库,基于promise,可以用在浏览器和node.js 中)的底层是使用fetch实现的,因此,AbortController也能用来终止axios发送的请求。
如何使用cURL调试CORS请求
在实际的工作中,我们经常会遇到不通域名之间的js或者接口互相调用的情况,这就需要在被调用端设置CORSheader。CORS原理很简单,只需要向响应头header中注入Access-Control-Allow-Origin,这样浏览器检测到header中的Access-Control-Allow-Origin,就可以跨域操作了。
聊聊 HTTP 常见的请求方式
自 1990 年以来,超文本传输协议(HTTP) 就成为了互联网数据通信的基础,它是分布式协作超媒体信息系统的应用层协议,是一种通用的无状态协议。具体来讲就是让服务器不保留与客户交易时的任何状态,由客户端单方面向服务器发送请求数据。
一个 HTTP 请求的曲折经历
从一个经典的面试题说起,输入URL到页面展现的过程:
输入URL后,会先进行域名解析。优先查找本地host文件有无对应的IP地址,没有的话去本地DNS服务器查找,还不行的话,本地DNS服务器会去找根DNS服务器要一个域服务器的地址进行查询,域服务器将要查询的域名的解析服务器地址返回给本地DNS,本地DNS去这里查询就OK了。
kotlin协程实战:用协程实现动态权限请求
自从6.0加入动态权限之后,很多地方都要用到,开始的时候使用的原生代码写权限请求,代码格式如:
