1HTTP协议是什么?
HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
HTPP有多个版本,目前广泛使用的是HTTP/1.1版本。
2 HTPP原理
HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件,、图片文件, 查询结果等。
HTTP协议一般用于B/S架构()。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
简单来说就是:发送请求----回复请求
请求和回复的结构都为 请求行----请求头----正文
第一行都为请求行 请求头都为 头:+内容 正文一般为json格式
3示例
客户端请求:
GET /hello.txt HTTP/1.1 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept-Language: en, mi
第一行 get(请求方法) hello.txt(url) HTTP/1.1(协议版本)
拓展:
常见请求方法
- GET:请求指定的页面信息,并返回实体主体。
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
- HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
- PUT:从客户端向服务器传送的数据取代指定的文档的内容。
- DELETE:请求服务器删除指定的页面
第二行 User-Agent:(头部字段)curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3(值)
注:User-Agent 简称UA为浏览器标识符 是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标 识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计 可以不用过多在意
第三行 Host:(头部字段)www.example.com(域名)
第四行 Accept-Language:(表示浏览器所支持的语言) en, mi(表示方法)
注:
示例
Accept-Language: zh-cn,zh;q=0.5
意思: 支持的语言分别是简体中文和中文,优先支持简体中文。
zh-cn:表示简体中文,zh:表示中文(包括简体中文,繁体中文)
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
意思:优先支持中文,如果没有中文则支持英文。
q:表示他之前语言的权重, 0 <= q <= 1
Accept-Language: zh-cn;q=0.8,en-US;q=0.9
意思:优先支持英文,如果没有英文则支持中文。
Accept-Language: zh-cn;q=0.8,en-US;q=0.6
意思:优先支持中文,如果没有中文则支持英文
服务端回复(响应):
HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT ETag: "34aa387-d-1568eb00" Accept-Ranges: bytes Content-Length: 51 Vary: Accept-Encoding Content-Type: text/plain
第一行 HTTP/1.1(用的协议版本)200 OK(状态码)
拓展:
常见状态码:
- 200 OK - 客户端请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 302 - 临时跳转
- 400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
- 404 - 请求资源不存在,可能是输入了错误的URL
- 500 - 服务器内部发生了不可预期的错误
- 503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
剩下的头就不再过多解释可以点击链接查看https://www.runoob.com/http/http-header-fields.html