文章目录
前言
提示:关于前端学习中,需要了解到的http相关知识。
提示:以下是本篇文章正文内容,下面案例可供参考
一、HTTP的八种请求方式来表明Request-URL指定的资源的不同操作方式
HTTP 1.0定义了三种请求方式: GET、POST和HEAD方式
HTTP 1.1新增了五种请求方式:OPTIONS、PUT、DELETE、TRACE和CONNECT方法
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体 |
2 | HEAD | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改 |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容 |
5 | DELETE | 请求服务器删除指定的页面 |
6 | CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
7 | OPTIONS | 允许客户端查看服务器的性能(例如服务器支持的http方式) |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
GET和POST方式的对比
对比项 | GET | POST |
---|---|---|
后退按钮/刷新 | 无害 | 数据会被重新提交(浏览器应该告诉用户数据会重新提交) |
缓存 | 能被缓存 | 不能缓存 |
书签 | 可收藏为书签 | 不可收藏为书签 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded或multipart/form-data,为二进制数据提供多重编码 |
历史 | 参数保留在浏览器历史中 | 参数不保留在浏览器历史中 |
对数据类型的限制 | 只允许ASCII字符(用二进制对应的字符) | 没有限制,也允许二进制数据 |
对数据长度的限制 | GET方法由于是想URL添加数据,URL的长度受限在2K左右 | 无限制 |
安全性 | 与POST相比,GET的安全性较差,因为发送的数据是URL的一部分,故在发送密码或者其他敏感信息时绝对不用使用GET | POST比GET更安全,因为参数不会被保存在浏览器历史或web服务器日志中 |
可见性 | 数据在URL中对于所有人都是可见的 | 数据不会显示在URL中 |
二、实体主体内对象的媒体类型content-type
(请求头响应头都有,适用于请求体和响应体)
-
application/x-www-form-urlencoded
浏览器的原生form表单
-
multipart/form-data
一种常见的POST提交方式,通常表单上传文件时使用该种方式
-
application/json
告诉服务器消息主体是序列化后的JSON字符串
-
text/xml
主要用来提交XML格式的数据
-
text/plain
提交的为文本类型
三、常见的请求头
- Accept: text/html,image/* // 浏览器接受的数据类型
- Accept-Charset: ISO-8859-1 // 浏览器接受的编码格式
- Accept-Encoding: gzip,compress //浏览器接受的数据压缩格式
- Accept-Language: en-us,zh- //浏览器接受的语言
- Host: www.it315.org:80 //(必须的)当前请求访问的目标地址(主机:端口)
- If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --浏览器最后的缓存时间
- Referer: http://www.it315.org/index.jsp – 当前请求来自于哪里
- User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) --浏览器相关信息
- Cookie:name=eric // 浏览器保存的cookie信息
- Connection: close/Keep-Alive // 浏览器跟服务器连接状态。close: 连接关闭 keep-alive:保存连接。
- Date: Tue, 11 Jul 2000 18:23:51 GMT // 请求发出的时间
其中keep-alive:
- http是基于TCP协议的,但是通常在进行一次请求和响应结束后会立刻中断;
- 在http1.0中,如果想要继续保持连接:
- 浏览器需要在请求头中添加 connection: keep-alive;
- 服务器需要在响应头中添加 connection:keey-alive;
- 当客户端再次放请求时,就会使用同一个连接,直接一方中断连接;
- 在http1.1中,所有连接默认是 connection: keep-alive的;
- 不同的Web服务器会有不同的保持 keep-alive的时间;
- Node中默认是5s;
四、响应状态码
分类 | 类别 | 原因短语 |
---|---|---|
1XX | Informational(信息性状态码) | 接受的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
- 200 OK 的响应结果表明请求被正常处理了
- 204 No Content 服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。
- 206 Partial Content 客户端进行了范围请求
301和302的区别?
- 301 Moved Permanently 永久性重定向。表示请求的资源已被分配了新的URI,以后应使用新URL。(原地址的信息被作废,并会转接到新的URL中)
- 302 Found 临时性重定向。表示请求的资源已被分配了新的URI,本次请求暂且使用新URL。(原地址的信息并没有作废)
- 303 See Other 由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。
- 304 Not Modified 客户端发送的附带条件的请求时,服务器允许请求访问资源,但服务器端资源未改变,可直接使用客户端未过期的缓存。(协商缓存)
- 400 Bad Request 请求报文中存在语法错误,不能被服务器所理解。
- 401 Unauthorized 请求需要通过HTTP认证。第一次返回,会弹出认证窗口,第二次返回,表示认证失败。
- 403 Forbidden 请求资源的访问被服务器拒绝了。
- 404 Not Found 服务器上没有请求的资源。
- 500 Internal Server Error 服务器在执行请求时发生了错误。
- 503 Service Unavailable 服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
五、HTTP协议的特点
1、无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
2、无状态
HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
3、简单快速
客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
4、灵活
HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
5、支持B/S及C/S模式
[参考自](https://codingwithalice.github.io/archive/)