其他分享
首页 > 其他分享> > HTTP协议详解

HTTP协议详解

作者:互联网

1. HTTP介绍

在这里插入图片描述

2. HTTP 1.0 和 HTTP 1.1

2.1 HTTP 1.0

<html>
	<body>
		<img src="/image01.jpg">
		<img src="/image02.jpg">
		<img src="/image03.jpg">
	</body>
</html>

2.2 HTTP 1.1

3. HTTP消息

(1) 在浏览器的地址栏中输入 www.baidu.com 访问百度首页,在F12中可以看到请求的 URL地址,如图所示。
在这里插入图片描述
(2) 单击URL地址左边的Name,在展开的默认头信息选项卡中可以看到格式化后的响应头信息和请求头信息。单击请求头信息一栏左边的“原始头信息”,可以看到原始的请求头信息,具体如下所示;
在这里插入图片描述

(3) 单击响应头信息一栏左边的“原始头信息”,可以看到原始的响应头信息,如下所示:
在这里插入图片描述

4. HTTP请求消息

4.1 HTTP请求行

GET /index.html HTTP/1.1

1. GET 请求方式

http://wwrw.xdr630.com/javaForm?username=xdr630&password=123456
GET /javaForm?username=xdr630&password=123456 HTTP/1.1

2. POST 请求方式

POST /javaForm HTTP/1.1
Host: www.xdr630.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 17

username=xdr630&password=123456
  1. POST 传输数据大小无限制
    由于GET请求方式是通过请求参数传递数据的,因此最多可传递1KB的数据。而POST请求方式是通过实体内容传递数据的,因此可以传递数据的大小没有限制
  2. POSTGET请求方式更安全
    由于 GET请求方式的参数信息都会在URL地址栏明文显示,而POST请求方式传递的参数隐藏在实体内容中,用户是看不到的,因此,POSTGET 请求方式更安全。

5. 测试GET请求方式

(1) 创建一个HTML文件,GET.html,如下所示:

GET.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="get">
    用户名:<input type="text" name="username" style="width: 150px"><br>
    密码: <input type="text" name="password" style="width: 150px"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

在这里插入图片描述

6. 测试POST请求方式

POST.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    用户名:<input type="text" name="username" style="width: 150px"><br>
    密码: <input type="text" name="password" style="width: 150px"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

在这里插入图片描述

在这里插入图片描述

7. HTTP请求消息头

1. Accept

2. Accept-Charset

Accept-Charset: ISO-8859-1
Accept-Charset: ISO-8859-1,unicode-1-1

3. Accept-Encoding

Accept-Encoding: gzip,compress

4. Accept-Language

Accept-Language: zh-CN,en-us

5. Authorization(授权)与Proxy-Authorization

Authorization: Basic Qw5uOjY2Njg4OA==

6. Host

Host: www.xdr630.top

7. If-Match

If-Match: "repository"
ETag: "repository"

8. If-Modified-Since

9. Range和If-Range

10. Max-Forward

11. Referer

Referer: http://localhost:8080/Test01/GET.html

12. User-Agent

User-Agent: Mozilla/4.0(compatible;MSIE 8.0; Windows NT 5.1: Trident/4.0)

8. HTTP 响应消息

1. HTTP响应状态行

HTTP/1.1 200 OK
  1. 1xx:表示请求已接收,需要继续处理。监哗斯分认工源店,价出战条细出网此额海
  2. 2xx:表示请求已成功被服务器接收、理解并接受。
  3. 3xx:为完成请求,客户端需进一步细化请求。
  4. 4xx:客户端的请求有错误。
  5. 5xx:服务器端出现错误。

2. HTTP 响应消息头

1. Accept-Range

Accept-Range: none

2. Age

Age: 1234567

3. Etag

Etag: abc1234

4. Location

Location: http://www.xdr630.top

5. Retry-After

Retry-After: Sun, 21 Mar 2021 10:00:00
GMTRetry-After: 120			//120秒

6. Server

Server: Apache- Coyote/1.1

7. Vary

Vary: Accept-Language

8. WWW-Authenticate和Proxy-Authenticate

WWW-Authenticate: BASIC realm= "xdr630"

9. Refresh

Refresh:3
Refresh:3; url=http://www.xdr630.top

10. Content-Disposition

Content-Type: application/octet-stream
Content- Disposition: attachment; filename=lee.zip

3. HTTP其他头字段

1. 通用头字段

1. Cache-Control

Cache-Control: no- stroe,no-cache,must-revalidage

2. Connection

Connection: Keep-Alive
Connection: close

3. Data

Mon, 22 Feb 2021 08:29:02 GMT
  1. 响应状态代码表示服务器的错误,如500(内部服务器错误)或503(服务不可用),那么服务器就不可能产生一个有效的日期。
  2. 服务器没有时钟,不能提供当前时间,响应就不能设置Date头,这种情况下,服务器也不能设置如 Expire、Last-Modified等这样的头字段。

4. Pragma

Pragma: no-cache

5. Transfer-Encoding

Transfer-Encoding: chunked
HTTP/1.1 200 OK
Content-Type: text/htm1Transfer-Encoding: chunked

7f
<html>
<head>
<title>trailer Example</title>
</head>
<body>
<p> Please wait while we complete your transaction ...</p>
2c
<p>Transaction complete!</p>
</body>
</html>
0

6. Trailer

Trailer:Date

7. Upgrade

//请求消息
GET /HTTP/1.1  
Host: 127.0.0.1
Upgrade: TLS/1.0
//响应消息
HTTP/1.1 101 Switching Protocols
Upgrade: TLS/1.0

8. Via

Via: HTTP/1.1 Proxy1,HTTP/1.1 Proxy2
Via: 1.1 Proxy1,1.1 Proxy2

9. Warning

warning:112 Disconnected operation

2. 实体头字段

1. Allow

Al1ow: GET,HEAD,PUT

2. Content-Language

Content-Language: en-us

3. Content-Length

HTTP/1.1 200 OK
Date: Mon, 22 Feb 2021 09:29:57 GMT
Content- Length:109


<html>
<head>
<title> content-Length Example</title>
</head>
<body>
Content-Length:109
</body>
</html>

4. Content-Location

//请求消息
GET /docs/index.html HTTP/1.1
Host: httpd.apache.org
Accept- Language: en-us
//响应消息
HTTP/1.1 200 OK
Date:  Mon, 22 Feb 2021 09:29:57 GMT	
Server: Apache(UNIX)
Content-Location: index_en_us.html
Content-Type: text/html
Content-Language: en-us

5. Content-Range

HTTP/1.1 206 Partial content
Date: wed,15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-Range: bytes 21010-47021/47022
Content- Length:26012
Content-Type: image/gif

6. Content-MD5

Content-MD5: ZTFmZDA5MDYyYTMzZGQzMDMxMmixMjc4YThhNTMyM21=

7. Content-Type

...
<mime-mapping>
	<extension>pdf</extension>
	<mime-type>application/pdf</mime-type>
</mime-mapping>
...

标签:协议,HTTP,请求,响应,详解,头字段,服务器,客户端
来源: https://www.cnblogs.com/xdr630/p/14449115.html