欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Http:基础知识

程序员文章站 2022-07-10 14:19:02
...

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

https://blog.csdn.net/cjj717938588/article/details/35267051

https://cloud.tencent.com/developer/chapter/13539