Web开发 之Http协议详解

HTTP请求报文

HTTP请求报文由3部分组成(请求行+请求头+请求体):
在这里插入图片描述
请求行:
例如:POST /chapter17/user.html HTTP/1.1
格式:请求方式 资源路径 协议/版本
请求行必须在http请求格式的第一行。

请求头:
例如:Host: 39.108.107.149:8080
请求头从第二行开始,到第一个空格结束。
请求头和请求体之间存在一个空行。
请求头通常以键值对{key:value}方式传递数据。
key为规范的固定值。
value为key对应的取值,通常是一个值,可能是一组。

请求体:
当请求方式是POST的时,请求体会有请求的参数,格式如下:username=zhangsan&password=123

POST http://39.108.107.149:8080/test HTTP/1.1
User-Agent: Fiddler
Host: 39.108.107.149:8080
Content-Length: 20
 
username=zhangsan&password=123

HTTP请求报文头属性(HTTP Request Header)

Accept
指定客户端能够接收的内容类型,专业术语称为MIME类型(文件类型的一种描述方式)。

Accept: text/plain, text/html

Accept-Encoding
浏览器通知服务器,浏览器支持的数据压缩格式。如GZIP压缩。

Accept-Encoding: gzip, deflate, br

Accept-Language
浏览器通知服务器,浏览器支持的语言。

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

Cookie
HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。

Cookie: JSESSIONID=F387583148A9E4E0A81020E6D988B816; _ga=GA1.2.1423890601

Content-Type
请求的与实体对应的MIME信息。
如果是POST请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码。

Content-Type: application/x-www-form-urlencoded

Connection
表示客户端与服务连接类型;Keep-Alive表示持久连接,close已关闭。(HTTP 1.1默认进行持久连接)

Connection: keep-alive

Cache-Control
指定请求和响应遵循的缓存机制,对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。

Cache-Control: no-cache

User-Agent
浏览器通知服务器,客户端浏览器与操作系统相关信息。

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36

Host
指定请求的服务器主机名。

Host: www.baidu.com

在这里插入图片描述

HTTP响应报文

HTTP的响应报文也由三部分组成(响应行+响应头+响应体):
在这里插入图片描述

响应状态码

由3位数字组成,第一个数字定义了响应的类别。

1xx: 指示信息,表示请求已接收,继续处理

2xx: 成功,表示请求已被成功接受,处理。

  • 200 OK:客户端请求成功
  • 204 No Content:无内容。服务器成功处理,但未返回内容。一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况。不会刷新页面。
  • 206 Partial Content:服务器已经完成了部分GET请求(客户端进行了范围请求)。响应报文中包含Content-Range指定范围的实体内容

3xx: 重定向

  • 301 Moved Permanently:永久重定向,表示请求的资源已经永久的搬到了其他位置。
  • 302 Found:临时重定向,表示请求的资源临时搬到了其他位置
  • 303 See Other:临时重定向,应使用GET定向获取请求资源。303功能与302一样,区别只是303明确客户端应该使用GET访问
  • 307 Temporary Redirect:临时重定向,和302有着相同含义。POST不会变成GET
  • 304 Not Modified:表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足。返回304时,不包含任何响应主体。虽然304被划分在3XX,但和重定向一毛钱关系都没有

4xx: 客户端错误

  • 400 Bad Request:客户端请求有语法错误,服务器无法理解。
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务
  • 404 Not Found:请求资源不存在。比如,输入了错误的url
  • 415 Unsupported media type:不支持的媒体类型

**5xx:**服务器端错误,服务器未能实现合法的请求。

  • 500 Internal Server Error:服务器发生不可预期的错误。
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

响应头

Location
指定响应的路径,需要与状态码302配合使用,完成跳转。

Location: http://www.zcmhi.com/archives/94.html

Content-Type
响应正文的类型(MIME类型)。

Content-Type: text/html; charset=utf-8

Content-Disposition
通过浏览器以下载方式解析正文

Content-Disposition: attachment;filename=xx.zip

Set-Cookie
服务器向浏览器写入Cookie。

Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1

Content-Encoding
服务器使用的压缩格式。

Content-Encoding: gzip

在这里插入图片描述

响应体

响应报文体,服务器发送给浏览器的正文 响应体,响应体是服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染 ,显示页面内容。

Content-Type详解

常见的Content-Type:(Content-Type: text/html;charset=utf-8)

Content-Type解释
text/htmlhtml格式
text/plain纯文本格式
text/cssCSS格式
text/javascriptjs格式
image/gifgif图片格式
image/jpegjpg图片格式
image/pngpng图片格式
application/x-www-form-urlencodedPOST专用:普通的表单提交默认是通过这种方式。form表单数据被编码为key/value格式发送到服务器。
application/jsonPOST专用:用来告诉服务端消息主体是序列化后的 JSON 字符串
text/xmlPOST专用:发送xml数据
multipart/form-dataPOST专用,需要在表单中进行文件上传时,就需要使用该格式

application/x-www-form-urlencoded
最常见的POST提交数据的方式。浏览器原生的form表单,如果不设置enctype属性,那么最终就会以application/x-www-form-urlencoded 方式提交数据。请求体格式:key=value&key2=value2
在这里插入图片描述
multipart/form-data
使用表单上传文件时,必须让 form 的 enctyped 等于这个值。
application/json
告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数。

参考

Http协议详解(深入理解)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值