图解HTTP读书笔记
第一章 了解Web及网络基础 Web使用一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。而协议是指规则的约定。可以说,Web是建立在HTTP协议上通信的。 TCP/IP的分层管理 分层的好处:如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层之后只需把变动的层替换掉即可。把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动了。层次化之后,设计也变得相对简单了。处于应用层上的应用可以只考虑分派给自己的任务,而不需要弄清对方在地球上哪个地方、对方的传输路线是怎样的、是否能确保传输送达等问题。 应用层 决定了向用户提供应用服务时通信的活动。 TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(File Transfer Protocol,文件传输协议)和 DNS(Domain Name System,域名系统)服务就是其中两类。HTTP 协议也处于该层。 传输层 传输层对上层应用层,提供处于网络连接中的两台计算机之间的数 ...
Nginx代理以及面向未来的HTTP
windows下使用nginx 通过官网下载Nginx,将其解压。在命令行内输入./nginx.exe即可启动。 基础代理配置 如果启动的nginx进程过多,可能会导致代理不生效! 通过taskkill /IM nginx.exe /F命令可以清除所有nginx进程。 通过include server/*.conf实现为单独一个站点设置配置文件 123http{ include server/*.conf} 此配置代表将server文件下的所有conf文件导入。 最简单的代理 123456789server{ listen 80; server_name test.com; location /{ proxy_pass http://127.0.0.1:8888; # 修改代理头为请求的地址 proxy_set_header Host $host; }} 以上配置表示 当访问test.com时会映射到本地8888端口。$host表示请 ...
HTTP各种特性总览
更多HTTP头特性可参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers CORS跨域请求的限制与解决 在返回数据时设置头信息即可,例如: 123456const http = require("http");http.createServer(function (req, res) { res.writeHead(200,{ "Access-Control-Allow-Origin":'*' })}).listen(8888); 跨域是由浏览器限制的,浏览器允许img、script、link等标签访问不同域的内容。 将其中的*设置为某个域名,那么则标识只允许某个域名可以访问。但是只能一个域名,如果需要多个域名需要增加服务器逻辑进行判断。 CORS跨域限制以及与请求验证 当请求头中包含一些自定义的头信息,那么默认情况下同样会收到跨域限制,因此需要设置允许的头: 123456789101112c ...
HTTP协议基础及发展历史
经典五层模型介绍 第三层 物理层 定义物理设备如何传输数据 数据链路层 在通信的实体间建立数据链路连接 网络层 数据在节点之间传输创建逻辑链路 传输层 向用户提供可靠的端到端(End-to-End)服务 传输层向高层屏蔽了下层数据通信的细节 应用层 为应用软件提供了很多服务,构建与TCP协议之上。屏蔽了网络传输相关细节 HTTP协议的发展历史 HTTP/0.9 只有一个命令GET 没有HEADER等描述数据的信息 服务器发送完毕,就关闭TCP连接 HTTP/1.0 增加了很多命令 增加status code和header 多字符集支持、多部分发送、权限、缓存等 HTTP/1.1 持久连接 pipeline 增加了host和其他一些命令 HTTP2 所有数据以二进制传输 同一个连接里面发送多个请求不在需要按照顺序来 头信息压缩以及推送提高效率的功能 三次握手 过程:张三招手–李四点头微笑–李四招手–张三点头微笑 。其中李四连续进行了2个动作,先是点头微笑(回复对方),然后再次招手(寻求确认),实际上可以将这两个动作合一,招手的同时点头 ...
跨域资源共享
跨域资源共享是什么 CORS全称为Cross-Origin Resource Sharing,被译为跨域资源共享,新増了一组HTTP首部字段,允许服务器声明哪些源站有权限访问哪些资源。 跨域资源共享标规范要求,对那些可能对服务器数据产生副作用的HTTP请求方法(特别是GET以外的HTTP请求,或者搭配某些MIME类型的POST请求),浏览器必须首先使用OPTIONS方法发起一个预检请求,从而获知服务端是否允许该跨域请求。服务器确认允许之后,才发起实际的HTTP请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证。 跨域资源共享机制的工作原理主要应用于三个场景 简单请求 预检请求 认证请求 简单请求 请求方法为:GET、HEAD、POST其中一个 不得人为设置下列集合之外的其他首部字段:Accept、Accept-Language、Content-Language、Content-Type Content-Type的值仅限以下三者之一 text/plain multipart/form-data application/x-www-form-urlenco ...
HTTP缓存机制与Cookie
HTTP的缓存机制 缓存是什么 缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当Web缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。 缓存需要合理配置,因为并不是所有资源都是永久不変的。重要的是对一个资源的缓存应截止到其下次发生改变(即不能缓存过期的资源)。 缓存服务器端的数据的优点 缓解服务器端的资源消耗和运行压力,提升服务器端的整体性能。 减少服务器端资源加载的延迟,进而成少显示某个资源所用的时间 减少对带宽造成的压力,避免网络阻塞问题的出现 Web站点变得更具有响应性 常见的HTTP缓存只能存储GET响应,对于其他类型的响应则无能为力。 检索请求的成功响应:响应状态码为200,则表示为成功。包含例如HTML文档,图片,或者文件的响应。 不变的重定向:响应状态码为301 错误响应:响应状态码为404的一个页面。 不完全的响应:响应状态码为206,只返回局部的信息。 除了GET请求外,如果匹配到作为ー个已被定义的cache键名的响应。 缓存类型 私有缓存 私有缓存只能用于单独用户。洳览器缓存拥有用户通过HTTP ...
HTTP消息
HTTP报文 HTTP报文是什么 HTTP报文,又称HTTP消息,是服务器和客户端之间交换数据的方式。有两种类型的消息:请求,由客户端发送用来触妓一个服务器上的动作;响应,来自服务器的应答。 HTTP消息由采用ASCII编码的多行文本构成。在HTTP/1.1及早期版本中,这些消息通过连接公开地发送。在HTTP/2中,为了优化和性能方面的改进,曾经可人工阅读的消息被分到多个HTTP帧中。 HTTP请求报文 HTTP响应报文 HTTP消息 HTTP消息结构 start line:一行起始行用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。 HTTP headers:一个可选的HTTP头集合指明请求或描述消息正文。 empty line:-个空行指示所有美于请求的元数据已经发送完毕。 body:一个可选的包含请求相美数据的正文(比如HTML表单内容)或者响应相美的文档。正文的大小有起始行的HTTP头来指定。 起始行和HTTP消息中的HTTP头统称为“请求头”,而其有效负载被称为“消息正文”。 请求消息与响应消息 请求消息 起始行 起始行包含 ...
HTTP是什么
HTTP是什么? HTP全称为 Hypertext Transfer Protocol,被译为超文本传输协议,是互联网上应用最为广泛的一种网络协议。 HTTP协议是在Web上进行数据交换的基础,是一种“客户端——服务器端”协议。也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的Web文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTTP请求与响应消息 客户端和服务端通过交换各自的消息(与数据流正好相反)进行交互。 由像浏览器这样的客户端发出的消息叫做请求(requests) 被服务端回应的消息叫做响应(responses) 基于HTTP的组件系统 请求通过一个实体被发出,实体也就是用户代理。大多数情况下,这个用户代理都是指刘览器。 每一个发送到服务器的请求,都会被服务器处理井返回一个消息,也就是响应。 在这个请求与回应之间,还有许许多多的被称为 Proxies的实体,他们的作用与表现各不同。 客户端 user-agent就是任何能够为用户发起行为的工具。这个角色 ...