文章目录
一、HTTP协议
1、HTTP 和 Web服务器的使用
- 如果没有 Web 服务器的时候就不需要 HTTP协议。我们之前练习的网页只能在自己的电脑打开。有了 Web 服务器的时候,只要有网络和 Web 服务器的电脑都可以访问 Web 资源。
- ip 地址分为内网地址(酒店号码:3243)和外网地址(手机号:123XXXX)。平时使用的电脑一般是没有外围地址。
- 电脑局域网地址:电脑属性 IPv4 地址。
2、HTTP 协议
- HTTP (Hytper Text Transfer Protocol,全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议。
- HTTP 是一种纯文本协议。传输的数据 = 控制信息 + 携带的负荷信息(html、css、js),控制信息是纯文本的,但是它携带的数据信息没有限制。
- HTTP 往往是基于传输层的 TCP 协议实现的。(HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于 UDP 实现)。
3、URL
- Uniform Resource Locator,统一资源定位符。一个完整的 URL 一定描述的是网络上唯一的一个资源。
- 完整的 URL :协议号(http://)+ web服务器所在(服务器所在主机(ip 地址、域名)+服务器所占端口(可省略))/ 资源路径(/index.* 可省略)+ 查询字符串 + 片段标识符 。
- DNS(Domain Name Service)会把域名解析成 ip 。
- 查询字符串(query string):跟在路径后边,以问号开头,然后是key、value形式,以 & 符来分割。主要是在动态资源请求,资源固定,但内容不固定。
- 片段标识符(segment):用来在同一个资源上定位当前显示效果的。xxx.html#id ,就可以定位到对应 id 的内容。
- 绝对路径和相对路径:. 当前位置不动;. . 当前位置的父目录。Web 服务器以 webroot 作为根路径。JS 文件中的地当前位置,不是跟着JS文件的位置,而是根据 包含 JS 的 html 的资源来明确当前位置。
- URL 的编码:由于 URL 中能出现的字符是有限的,所以当出现 URL 中不允许出现的字符时就会被 URL 编码。在百度中搜索 中国,
4、请求(Request)
- 代表从浏览器到服务器。
- HTTP 请求 = 请求的方法(request method/ method)+ 资源 URL / 路径 + 协议版本(0.9?1.0?1.1?…)+ 请求头(资源的具体描述) + 正文/请求体(具体的资源内容,协议有效负荷信息)。
- 标准格式:
请求方法
GET 和 POST 区别
- 语义上的区别:get 是获取,post是提交。
- 由于语义上的区别,所以表现在很多现象上有区别:
-
get 请求不懈怠请求体(正文)的;post 请求允许携带请求体,但是否携带看情况。
-
get请求具有幂等性,post请求不具备幂等性。
幂等性:假设没有第三方在动服务器资源的前提下,get请求:及时发起多次,得到的结果应该是完全一样的。post请求:第二次请求可能得到和第一次请求不同的结果。 -
get 请求时缓存友好的,post请求不允许缓存。
缓存:通过开辟一个新的数据交换缓冲区,来解决原始数据获取代价太大的问题,让数据得到更快的访问。get 请求是幂等的,请求得到的结果完全一致,所以缓存那块的资源就是想要的资源。 -
GET参数通过 URL 提交(query string),POST 的参数既可以在 query string 中,也可以在请求体(form表单)中。
-
GET 能提交的参数有长度限制,这假设了URL的长度有限制,但在标准中没有规定长度限制,不同浏览器或者Web服务器确实有长度限制。
-
POST只是相对GET安全一点点,POST参数放在请求体中,但是通过抓包工具/开发者工具都可以看到,使用HTTPS才安全。
-
5、应答/响应(Response)
- 从服务器到浏览器。
- 响应信息:
- 协议版本
- 本次请求结果
- 本次响应的元信息:响应头
- 响应的资源内容: 响应体/正文
状态码和状态描述
- 200 OK 成功
- 404 Not Found 请求的资源是不存在的
- 500 Internal Server Error 动态资源,由于 java 代码报异常,所以 tomcat报500错误
响应头
- content-***:用来描述正文的元信息。content-length:正文的字节数。content-type:正文的内容类型,浏览器会根据此来解析浏览器的资源。