Http:基础知识
Http请求:
请求消息:
GET /index.html HTTP/1.1
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: 192.168.0.44:80
Connection: Close
请求消息包括:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
则上面的
请求行:
GET /index.html HTTP/1.1
请求头部为:
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: 192.168.0.44:80
Connection: Close
请求数据为空。
GET : 向特定的资源发出请求。
HTTP/1.1协议*定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式:
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体。 |
2 | HEAD | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
5 | DELETE | 请求服务器删除指定的页面。 |
6 | CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | OPTIONS | 允许客户端查看服务器的性能。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
Accept:浏览器端可以接受的MIME类型。
ACCept | 类型 |
---|---|
Accept: text/html | 代表浏览器可以接受服务器回发的类型为 text/html |
Accept: */ * | 代表浏览器可以处理所有类型 |
Accept-Language:浏览器申明自己接收的语言。如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受
Accept-Language: zh-cn
Host:(发送请求时,该头域是必需的)主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。
Host: 192.168.0.44:80;
User-Agent : 告诉HTTP服务器,客户端使用的操作系统和浏览器的名称和版本
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
keep-alive :当一个网页打开完成后,
客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
Connection: keep-alive;
close :代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。
Connection: close;
Http响应:
响应消息:
HTTP/1.1 200 OK
Date: Fri, 11 Jan 2019 07:22:10 GMT
Server: Boa/0.94.14rc21
Accept-Ranges: bytes
Connection: close
Content-Length: 716
Last-Modified: Fri, 11 Jan 2019 01:48:22 GMT
Content-Type: text/html
HTTP响应也由四个部分组成,分别是:
状态行、
消息报头
、空行 和 响应正文。
则上面的
状态行:
HTTP/1.1 200 OK
消息报头:
Date: Fri, 11 Jan 2019 07:22:10 GMT
Server: Boa/0.94.14rc21
Accept-Ranges: bytes
Connection: close
Content-Length: 716
Last-Modified: Fri, 11 Jan 2019 01:48:22 GMT
Content-Type: text/html
(下面还有数据内容(响应正文),没有再列出。)
响应头第一行也称为状态行。格式为:
HTTP-Version 空格 Status-Code 空格 Reason-Phrase CRLF
HTTP- Version表示HTTP版本,例如为HTTP/1.1。
Status-Code是HTTP状态码,用三个数字表示(机器自动识别)。
Reason-Phrase是个简单的文本描述,解释Status-Code的具体原因(人工理解)。
状态码为200表示请求成功。不需要我们研究,需要我们研究的是那些代表主线错误的代码。
常见的状态码404表示:请求的资源(网页等)不存在
这边测试出现的状态码400:客户端请求的语法错误,服务器无法理解。
(是我这边把服务器端文件的路径搞错了导致了(少了前面的"/"))
常见的响应头:
Date:表示消息发送的时间,时间的描述格式由rfc822定义。
Date: Fri, 11 Jan 2019 07:22:10 GMT
Server:指明HTTP服务器用来处理请求的软件信息。
Server: Boa/0.94.14rc21
Accept-Ranges:此字段的值表示可用于定义范围的单位。
none 没有范围单位被支持,这使得它的标题相当于它自己的缺席,因此很少使用,尽管一些浏览器,如 IE9 ,它被用来禁用或删除下载管理器中的暂停按钮。
bytes 范围的单位是字节。
Accept-Ranges: bytes
Accept-Ranges: none
Connection: close (同上) 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。
Connection: close
Content-Length : 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据
Content-Length: 716
Last-Modified : 文档的最后改动时间。
客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。
Last-Modified也可用setDateHeader方法来设置。
Last-Modified: Fri, 11 Jan 2019 01:48:22 GMT
Content-Type:用于指示所述媒体类型的资源的。作为响应,Content-Type标题告诉客户实际返回的内容的内容类型。
Content-Type: text/html
Content-Type: text/x-csrc
参考链接:
http://www.runoob.com/http/http-messages.html
https://blog.csdn.net/kingcodexl/article/details/51306062
上一篇: python之os模块