JavaWeb——【HTTP】——一篇文章走进HTTP的世界

HTTP


1.HTTP协议

1.1.HTTP介绍

超文本传输协议,客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式
基于请求和响应的模式(先有请求,后有响应)
浏览器与Web服务器交互过程
在这里插入图片描述

1.2.HTTP协议的版本

HTTP最早的版本是0.9,于1990年被提出,后来,为了进一步完善HTTP,先后在1996年提出了版本1.0,在1997年提出了1.1,这里只对1.0和1.1进行介绍。

1.2.1.HTTP/1.0

HTTP1.0有着明显的缺陷:
每次只能处理一个HTTP请求,导致客户端与服务端交互比较耗时
发送请求后,服务器做出响应,链接立即断开

1.0 交互过程图
在这里插入图片描述

1.2.2.HTTP/1.1(使用的版本)

HTTP1.1克服了HTTP1.0的缺陷,它支持持久连接,也就是说一个TCP连接上可以传送多个HTTP请求和响应,减少资源消耗。

1.1 交互过程图
在这里插入图片描述

1.3.HTTP 请求消息

请求消息:指的是客户端访问某个URL地址、单击网页的某个超链接或者提交网页上的form表单时客户端给服务端发送的数据
响应消息:服务器接收到请求数据后,会将处理后的数据回送给客户端,即HTTP响应消息。
在HTTP消息中,处理服务端的响应实体内容(HTML网页、图片等)以外,其它信息对用户都是不可见的,想要观察这些数据,必须借助工具进行查看。

1.3.1.使用Chrome查看HTTP头
在网页任意地方右击选择审查元素或者按下Shift + Ctrl + c打开Chrome自带的调试工具,截图如下
在这里插入图片描述
选择Network标签,刷新网页(在打开调试工具的情况下刷新)
在这里插入图片描述

刷新后在左边找到该网页URL,点击后右边选择Headers,就可以看到当前网页的HTTP头了

1.3.2.请求方式

在这里插入图片描述

请求方式 介绍
POST 向指定的资源提交要被处理的数据数据,请求服务器进行处理(提交表单或者上传文件)
GET 从指定的资源请求数据。请求获取URI所标示的资源
HEAD 请求获取由URI所标识资源的响应消息头
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
DELETE 请求服务器删除URI所 标识的资源
TRACE 请求服务器会送收到的请求信息,主要用于测试或者诊断
PUT 将网页放置到指定URL位置(上传/移动)
CONNECT 保留将来使用

常用POST和GET
区别
GET把参数列表显示在地址栏中,安全级别低,不支持大数据
POST把参数封装在请求体中,安全级别高,支持大数据
请求头
请求头主要用于向服务器传递附加消息,例如客户端可以接收的数据类型、压缩方法、语言等。

1.3.3.请求头

常见请求头 描述 (红色掌握,其他了解)
Referer 浏览器通知服务器,当前请求来自何处。如果是直接访问,则不会有这个头。常用于:防盗链
If-Modified-Since 浏览器通知服务器,本地缓存的最后变更时间。与另一个响应头组合控制浏览器页面的缓存。
Cookie 与会话有关技术,用于存放浏览器缓存的cookie信息。
User-Agent 浏览器通知服务器,客户端浏览器与操作系统相关信息
Connection 保持连接状态。Keep-Alive 连接中,close 已关闭
Host 请求的服务器主机名
Content-Length 请求体的长度
Content-Type 如果是POST请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码
Accept: 浏览器可支持的MIME类型。文件类型的一种描述方式。MIME格式:大类型/小类型[;参数]例如: text/html ,html文件text/css,css文件 text/javascript,js文件 image/*,所有图片文件
Accept-Encoding 浏览器通知服务器,浏览器支持的数据压缩格式。如:GZIP压缩
Accept-Language 浏览器通知服务器,浏览器支持的语言。各国语言(国际化i18n)

1.3.4.请求体

当请求方式是post的时,请求体会有请求的参数,格式如下:
username=李四&password=123456
如果请求方式为get,那么请求参数不会出现在请求体中,会拼接在url地址后面
http://localhost:8080...?username=zhangsan&password=123

1.3.5.响应

当服务器收到浏览器的请求后,会回送响应消息给客户端
上图中的Status Code为状态码500表示请求失败,状态码由三位数字组成,状态码的第一位数字定义了响应的类别,后面两位没有具体的分类,第一位数字有5种类型的取值,如下:

  • 1xx:表示请求已接收,需要继续处理
  • 2xx:表示请求已成功被服务器接收、理解并接收
  • 3xx:为完成请求,客户端需要进一步细化请求
  • 4xx:客户端的请求有错误
  • 5xx:服务器出现错误

常见的状态码

  • 200 :请求成功处理,一切OK
  • 302 :请求重定向
  • 304 :服务器端资源没有改动,通知客户端查找本地缓存
  • 强制不使用缓存Chrome快捷键为:Ctrl + Shift + R
  • 404 :客户端访问资源不存在
  • 500 :服务器内部出错
    推荐链接:http://www.runoob.com/http/http-status-codes.html
常见响应头 描述
Location 指定响应的路径,需要与状态码302配合使用,完成跳转。
Content-Typ e 响应正文的类型(MIME类型)
取值:text/html;charset=UTF-8
Content-Disposition 通过浏览器以下载方式解析正文
取值:attachment;filename=xx.zip
Set-Cookie 与会话相关技术。服务器向浏览器写入cookie
Content-Encoding 服务器使用的压缩格式
取值:gzip
Content-length 响应正文的长度
Refresh 定时刷新,格式:秒数;url=路径。url可省略,默认值为当前页。
取值:3;url=www.njmsita.com //三秒刷新页面到www.njmsita.com
Server 指的是服务器名称,默认值:Apache-Coyote/1.1。可以通过conf/server.xml
Last-Modified 服务器通知浏览器,文件的最后修改时间。与If-Modified-Since一起使用。

1.4.GET 和 POST 演示

http://www.w3school.com.cn/tags/html_ref_httpmethods.asp

通过案例演示GET 和 POST 两种方式请求是如何传递数据
创建一个html文件,填写表单
GET
请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:
POST
请注意,查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>

	<body>
		<form action="#" method="post">
			<input type="text" name="username" /><br />
			<input type="text" name="password" /><br />
			<input type="submit" value="测试提交" />
		</form>
	</body>
</html>


发布了230 篇原创文章 · 获赞 250 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/weixin_42247720/article/details/103886734
今日推荐