Http随笔
Http请求由三部分组成,分别是:请求行、消息报头、请求正文
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本
格式如下:Method Request-URI HTTP-Version CRLF
eg:LPOST /reg.jsp HTTP/1.1 (CRLF)
......
HOST:www.guet.edu.cn (CRLF)
Content-Length:22 (CRLF)
Connection:Keep-Alive (CRLF)
Cache-Control:no-cache (CRLF)
(CRLF) //该CRLF表示消息报头已经结束,在此之前为消息报头
XXXXXXX //此行以下为提交的正文
HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
eg:HTTP/1.1 200 OK (CRLF)
请求方法(所有方法全为大写)有多种,各个方法的解释如下:
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
HTTP中与编码相关的消息报头
请求报头:
Accept:Accept请求报头域用于指定客户端接受哪些类型的格式列表。eg:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表明客户端希望接受html文本;
Accept-Encoding:Accept-Encoding请求报头域用于指定可接受的内容压缩编码方式。eg:Accept-Encoding:gzip.deflate.如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。
压缩类型:
- gzip:表示采用 Lempel-Ziv coding (LZ77) 压缩算法,以及32位CRC校验的编码方式
- Compress:采用Lempel-Ziv-Welch (LZW) 压缩算法。
- deflate:表示采用 zlib 结构 (在 RFC 1950 中规定),和 deflate 压缩算法(在 RFC 1951 中规定)。
- identity:用于指代自身(未经过压缩和修改)。除非特别指明,这个标记始终可以被接受。
- Br:表示采用Brotli 算法的编码方式。
响应报头:
Content-type:代表发送端(客户端|服务器)发送的实体的数据类型(即资源的MIME类型)。比如:Content-Type:text/html;代表发送端发送的数据格式是html。
Media-type常用类型:
-
application/x-www-form-urlencoded
- form表单或者提交的数据按照key1=value1&key2=value2方式进行编码,key、value均进行了urlencode
-
multipart/form-data
- 常见的POST数据提交的方式,使用form进行文件上传的时候,必须让form的enctype为这个。
-
application/json
- 消息主体是序列化后的json字符串。
-
text/html
- 是一种用HTTP作为传输协议,XML作为编码方式的远程调用规范。
- eg:Content-Type: text/html; charset=utf-8 Content-Type: multipart/form-data; boundary=xxx
Content-Encoding:服务端从中挑选一个用来对正文进行编码,并通过Content-Encoding响应头指明响应编码格式。
Transfer-Encoding:
- 用于表示节点之间传输message的编码方式。最典型是分块传输(chunked)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码