3. 强制缓存如果生效,不需要再和服务器发生交互;协商缓存不管是否生效,都需要与服务端发生交互
这个之前的文章中也提到过了 接着就是发生http请求,一个http请求的格式是这样的(红色字体是我给出的示例): ?...HTTP 请求报文封装完成后,数据来到了TCP层 TCP 层发送每一个报文的时候,都需要加上自己的地址(即源地址)和它想要去的地方(即目标地址),将这两个信息放到 IP 头里面,交给 IP 层进行传输...HTTP2.0 上方我们说的比较适应HTTP1.0/HTTP1.1,而HTTP2.0则与它们有一些区别: 采用二进制格式而非文本格式 消息头压缩 支持服务端推送 使用多路传输:HTTP1.0时一个连接一次只提交一个请求...HTTP1.1试过用流水线来解决这个问题, 但是效果并不理想(数据量较大或者速度较慢的响应, 会阻碍排在他后面的请求). 此外, 由于网络媒介和服务器不能很好的支持流水线, 导致部署起来困难重重。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142580.html原文链接:https://javaforall.cn
Axios 是一个基于 promise 的 HTTP 库,可以工作于浏览器中,也可以在 node.js 中使用,提供了一个API用来处理 XMLHttpRequests 和 node 的 http 接口...原因主要有: (1)Axios 支持 node.js,jquery 不支持 (2)Axios 基于 promise 语法标准,jquery 在 3.0 版本中才全面支持 (3)Axios 是一个小巧而专业的...HTTP 库,jquery 是一个大而全的库,如果有些场景不需要使用jquery的其他功能,只需要HTTP相关功能,这时使用 Axios 会更适合 下面了解下 Axios 的具体使用方式 示例 基本操作.../bower_components/axios/dist/axios.js"> axios.get('https://api.github.com/xxx'); </
前言:No.js 初步支持了 HTTP 能力,目前只是支持解析 HTTP 请求,很多地方还需要慢慢琢磨,本文简单介绍其实现。...1 HTTP 解析器 No.js 使用 Node.js 的 HTTP 解析器 llhttp 实现 HTTP 协议的解析,llhttp 负责解析 HTTP 报文,No.js 需要做的事情是保存解析的结果并封装具体的能力...解析完 HTTP 协议后,最终还需要回调 No.js 的 JS 层。HTTP_Parser 目前支持三种回调。...* httpparser;}; C++ 模块到定义非常简单,只是对 HTTP_Parser 的封装,然后通过 V8 导出能力到 JS 层。...JS 层拿到 TCP 层的数据后,通过执行 parse 进行 HTTP 协议的解析,我们看看 parse 对应函数 No::HTTP::Parser::Parse 的实现。
Http协议的不足 不验证身份,导致身份可能被伪装。...---- SSL/TSL协议的解决方案 SSL通常是指SLL和TSL,TSL是在SSL上进行了包装,本质上他们是一样的,通常HTTPS 是HTTP+SSL 或者HTTP+TSL;SSL主要针对HTTP存在的三个问题逐一实现了对应的解决方案...通信加密(解决数据被窃取问题) 因为HTTP不对通信内容进行加密处理,所以衍生了SSL加密技术协议,SLL采用混合加密(同时使用非对称加密和对称加密)的方式建立起安全的HTTP通信,经过加密后的内容即使被窃听了...2、对摘要信息进行签名 对摘要进行签名的目的主要是对确认数据发送人的身份,签名技术是使用非对称加密的原理, 非对称加密是使用一个密钥对(一个公钥,一个私钥),公钥加密只能由私钥解密,私钥加密只能由公钥解密...(3)客户端解密服务端响应的数据 解密数据:客户端用会话密钥解密响应数据; 部分图片来源:《图解HTTP》
而JS不是这样做的,JS是不需要编译成中间码,而是可以直接在浏览器中运行,JS运行过程可分为两个阶段,编译和执行。...(可参考你不知道的JS这本书),当JS控制器转到一段可执行的代码时(这段可执行代码就是编译阶段生成的),会创建与之对应的执行上下文(Excution Context简称EC)。...执行上下文可以理解为执行环境(执行上下文只能由JS解释器创建,也只能由JS解释器使用,用户是不可以操作该"对象"的)。...JS 的底层运行原理 每调用一个函数就会生成一个执行环境(俗称执行上下文),执行上下文环境数量没有限制 每调用一个函数就会生成一个执行环境(俗称执行上下文),执行上下文环境数量没有限制 单线程 同步执行...eval():把字符串单做JS代码执行,不推荐使用
、多部分发送、权限、缓存等 0x3 HTTP/1.1 持久连接 pipeline 增加host和其他一些命令 0x4 HTTP2 HTTP协议原理及实践 HTTP请求返回的完整过程 ?...HTTP服务可以通过CODE判断结果 六、创建服务 利用Node.js创建一个最简单的服务。...const http = require('http') http.createServer(function(request,response){ console.log('request come'..., request.url) response.end('Hello,HTTP') }).listen(8888) 123456 const http = require('http')http.createServer...(8888) 第二章 HTTP特性总览 一、HTTP访问控制(CORS) ?
本文基于兴趣部落接入 HTTP/3 的实践,聊一聊 HTTP/3 的原理以及业务接入的方式。 1....HTTP/3 原理 1.1 HTTP 历史 在介绍 HTTP/3 之前,我们先简单看下 HTTP 的历史,了解下 HTTP/3 出现的背景。...之上的 HTTP 协议被称为 HTTP/3,这就是”HTTP over QUIC 即 HTTP/3“的含义。...而 HTTP/3 首次连接只需要 1 RTT,后面的连接更是只需 0 RTT,意味着客户端发给服务端的第一个包就带有请求数据,这一点 HTTP/2 难以望其项背。那这背后是什么原理呢?...,这就是多路复用的原理。
在本节我们会详细了解 HTTP 的基本原理,了解在浏览器中敲入一个 URL 到获取网页内容发生了一个怎样的过程,了解了这些内容,有助于去进一步了解爬虫的基本原理。 1....HTTP 1.1 版本。...本表参考:http://www.runoob.com/http/http-methods.html。...505 HTTP 版本不支持 服务器不支持请求中所用的 HTTP 协议版本。...结语 本节我们了解了 HTTP 的基本原理,通过如上描述,我们应该对访问网页背后的请求和响应过程有了大体的认识,本节涉及到的知识点需要好好掌握,在后面分析网页请求的时候会经常用到。
HTTP 缓存是一块重要的内容,这是作为一个前端工程师必须要掌握的优化技能,也能让自己明白自己的工作,此次主要分了几个点进行总结 缓存策略 缓存首部 缓存类型 缓存计算时间 缓存资源类型 设置缓存 浏览器缓存策略...浏览器对于请求资源,拥有一系列成熟的 缓存策略 1、存储策略 确定 HTTP 响应内容是否可以被客户端缓存,可以被哪些客户端缓存 相关首部 设置 Cache-Control:no-cache Pragma...字段,现在为了向后兼容,也是指定缓存机制 Pragma:no-cache 3.Expires http1.0 字段,为了向后兼容,指定 缓存时间 Expires: Mon, 13 Aug 2018 03...返回最新的内容,客户端使用新的响应体 覆盖 旧的响应体 可以节省网页的打开时间,有机会省去整个响应体的发送 条件请求的触发条件 资源在客户端过期 用户手动刷新,不包括强刷 缓存资源类型 1、文件可以缓存,比如 js...所以,可以得出 1、ajax 请求的缓存都放在 disk 2、 页面引入的 js、css 都放在 memory 缓存过期时间计算 响应返回 Cache-Control: 当同时添加 max-stale,
、多部分发送、权限、缓存等 0x3 HTTP/1.1 持久连接 pipeline 增加host和其他一些命令 0x4 HTTP2 HTTP协议原理及实践 HTTP请求返回的完整过程 ?...HTTP服务可以通过CODE判断结果 六、创建服务 利用Node.js创建一个最简单的服务。..., request.url) response.end('Hello,HTTP') }).listen(8888) 123456 const http = require('http')http.createServer...(8888) 第二章 HTTP特性总览 一、HTTP访问控制(CORS) ?...指令 指令和指令值示例 指令说明 default-src ‘self’ cdn.geekmubai.com 默认加载策略 script-src ‘self’ js.geekmubai.com 对 JavaScript
之后会自动保存 c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookie d)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录 Http
Http定义了两个官方认证:基本认证和摘要认证,两者遵循相同的流程: 1 客户端发起GET请求 2 服务器响应401 Unauthorized,WWW-Authenticate指定认证算法,realm指定安全域...nonce 而客户端发送响应摘要 =MD5(HA1:nonce:HA2),其中HA1=MD5(username:realm:password),HA2=MD5(method:digestURI) 在 HTTP...HTTP摘要认证的安全性增强如下: 1 密码并非直接在摘要中使用,而是 HA1 = MD5(username:realm:password)。...同一组基于证书的加密技术组合一起,SSL介于http和tcp之间,负责http报文的加密和解密; 若URL为https,客户端打开一条到服务器443端口的连接,以二进制格式与服务器握手交换SSL安全参数...http流量
HTTP协议所在的协议层 HTTP是基于TCP协议之上的。在TCP/IP协议参考模型的各层对应的协议如下图,其中HTTP是应用层的协议。 4....HTTP请求响应模型 HTTP由请求和响应构成,是一个标准的客户端服务器模型(B/S)。HTTP协议永远都是客户端发起请求,服务器回送响应。...HTTPS实现原理 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP...https通信的优点: 1)客户端产生的密钥只有客户端和服务器端能得到; 2)加密的数据只有客户端和服务器端才能得到明文; 3)客户端到服务端的通信是安全的 7.3、非对称加密算法RSA的加密解密原理...我们可以Google Chrome为例:打开浏览器的设置选项,选择高级,可以看到隐私设置和安全性下面的一些设置,其中管理证书就可以看到谷歌浏览器一些内置证书,如图: 7.8双向认证 双向认证和单向认证原理基本差不多
使用 Node 非常轻松的构建一个 Web 服务器 在 Node 中专门提供了一个核心模块:http http 这个模块的职责就是帮你创建编写服务器的 加载 http 核心模块,http是变量名称,可以自定义...var http = require('http') 使用 http.createServer() 方法创建一个 Web 服务器 返回一个 Server 实例 var server = http.createServer...访问:http://127.0.0.1:3000/ ?...每访问一次就会增加一次记录 HTTP的请求和响应 var http = require('http') var server = http.createServer() request 请求事件处理函数...根据不同的请求路径发送不同的响应结果 var http = require('http') // 1.
HashMap结构及原理 HashMap是基于哈希表的Map接口的非同步实现。实现HashMap对数据的操作,允许有一个null键,多个null值。
根据本专题的上一篇文章所说提到的HTTP响应和HTTP请求的格式(HTTP请求和响应格式文章链接)我们可以书写简单的HTTP Server程序,让服务器上的返回给客户端的返回结果返回至网站中 简单版本...java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * HTTP...new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()))){ //下面的操作要严格按照HTTP...; import java.io.OutputStreamWriter; import java.util.HashMap; import java.util.Map; /** * 响应:表示一个http...响应,负责构造 */ public class HttpResponse { private String version = "HTTP/1.1"; private int status
//1,导入http模块 const http = require('http') //2,创建web服务器实例 const server= http.createServer() //3,为服务器实例绑定...console.log('someone visit our web server') }) //4,启动服务器,指定端口号 server.listen(1212,()=>{ console.log('服务器启动了:http...const http=require('http') const server=http.createServer(); server.on('request',(req,res)=>{ //req.url
请求响应原理及HTTP协议 1.服务器端基础概念 1.1 网站的组成 网站应用程序主要分为两大部分:客户端和服务器端。 客户端:在浏览器中运行的部分,就是用户看到并与之交互的界面程序。...// 引入系统模块http const http = require('http'); // 创建数据库 const app = http.createServer(); // 引入系统模块url const...Node.js异步编程 5.1 同步API, 异步API // 路径拼接 const public = path.join(__dirname, 'public'); // 请求地址解析 const...2000); setTimeout(() => { console.log('"0秒"后执行的代码'); }, 0); console.log('代码结束执行'); 5.7 Node.js...', 'utf-8'); let r2 = await readFile('./2.js', 'utf-8'); let r3 = await readFile('./3.js', 'utf
领取专属 10元无门槛券
手把手带您无忧上云