一个URL http://www.baidu.com/s?wd=hello%rsv_spt=1#5
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。(超文本是啥?超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户界面范式,用以显示文本及与文本之间相关的内容。)
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。(TCP/IP是啥?传输控制/网络协议;TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、FMTP、TCP、UDP、IP等协议构成的协议簇)
客户端是终端用户,服务器端是网站;
通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent);
应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server);
在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnels);
尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
http的作用就是直到浏览器和服务器如何进行沟通(毕竟是协议嘛)
curl -s -v -H "Try: xxx" -- "https://www.baidu.com"
(在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具,会得到请求和响应的格式及内容)> GET / HTTP/1.1
> GET / HTTP/1.1
请求方式 资源路径 协议/版本
> Host: www.baidu.com
要访问的域名(请求的服务器主机名)
> User-Agent: curl/7.65.3
访问的软件(发起请求的工具)
> Accept: */*
接收内容(这里是接收发过来的任何内容)
> Try: xxx
请求内容
>
curl -X POST -s -v -H "Try: xxx" -- "https://www.baidu.com"
> POST / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.65.3
> Accept: */*
> Try: xxx
>
curl -X POST -d "1234567890" -s -v -H "Try: xxx" -- "https://www.baidu.com"
> POST / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.65.3
> Accept: */*
> Try: xxx
> Content-Length: 10
请求体的长度
> Content-Type: application/x-www-form-urlencoded
请求的与实体对应的MIME信息。如果是post请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码
>
请求最多包含四部分,最少包含三部分(第四部分可以为空)
第三部分是一个回车
请求方式
这里的路径包括[查询参数], 但不包括[锚点]
没写路径的话就默认为 /
第二部分中的Comtent-Type标注了第四部分的格式
curl -s -v -H "Try: xxx" -- "https://www.baidu.com"
< HTTP/1.1 200 OK
协议/版本 状态码 状态描述
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2443
响应长度
< Content-Type: text/html
响应格式
< Date: Fri, 03 Jul 2020 09:23:44 GMT
< Etag: "58860402-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:18 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
curl -X POST -d "1234567890" -s -v -H "Try: xxx" -- "https://www.baidu.com"
< HTTP/1.1 302 Found
< Connection: keep-alive
< Content-Length: 17931
< Content-Type: text/html
< Date: Fri, 03 Jul 2020 09:20:12 GMT
< Etag: "54d9748e-460b"
< Server: bfe/1.0.8.18
<
1xx:指示信息,表示请求已接收,继续处理
2xx:成功,表示请求已被成功接受,处理。
200 OK:客户端请求(GET)成功
201 Created: 常用于POST,PUT 请求,表明请求已经成功,并新建了一个资源。并在响应体中返回路径
202 Accepted: 请求已经接收到,但没有响应,稍后也不会返回一个异步请求结果。 该状态码适用于等待其他进程处理或者批处理的场景
203 No-Authoritative Information: 表明响应返回的元信息(meta-infomation)和最初的服务器不同,而是从本地或者第三方获取的。
主要用于其他资源的镜像和备份。除了前面的情况,首选还是200。
204 No Content:无内容。服务器成功处理(POST),但未返回内容。一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况。不会刷新页面
205 Reset Content: 告诉用户代理(浏览器)重置发送该请求的文档
206 Partial Content:服务器已经完成了部分GET请求(客户端进行了范围请求)。响应报文中包含Content-Range指定范围的实体内容
3xx:重定向(失败)
4xx:客户端错误(失败, 访问者出错)
5xx:服务器端错误,服务器未能实现合法的请求
原文:https://www.cnblogs.com/TRY0929/p/13234323.html