Java Web 入门笔记(三)——HTTP
2021/7/25 20:37:30
本文主要是介绍Java Web 入门笔记(三)——HTTP,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、简介
概述
HTTP(超文本传输协议)是一个简单的请求-响应协议,通常运行于TCP之上,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
超文本:是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。可以理解为普通的文本文件中若是含有超链接,点击超链接后可以进入另一个文本文件,该文本即为超文本。
当客户端使用浏览器访问网页时,浏览器向服务器发送请求,随后服务器会返回响应给浏览器客户端,所谓的响应就是服务器发送HTML文件给浏览器,浏览器接收发送过来的HTML文件。
设计HTTP的初衷就在于提供一种发布和接收HTML页面的方法,我们可以将其理解为一种规范。所有的WWW文件都必须遵守HTTP的标准。
发展历程
-
Http 0.9
在1990年,WWW之父蒂姆·贝纳斯·李提出HTTP协议,随后WWW联盟成立,组织了IETF小组进一步完善和发布HTTP;
此时的Http协议只是一个草案,纯文本格式。贝纳斯最初设想的系统里的文档都是只读的,所以只允许用“GET”方法从服务器上获取HTML文件,并且在响应请求之后立即关闭连接,功能十分有限。
-
Http 1.0
在1996年正式发布,增加了HEAD、POST等方法,增加了响应状态码(如:404),标记可能的错误原因,引入了协议版本号的概念、HTTP header头概念,传输的数据不在限制于文本。
在1.0中服务器发送完一个http响应后,会断开连接。
-
Http 1.1
是目前互联网上使用最广泛的协议,功能也十分完善。
1.1版本协议增加了PUT、DELETE等新的方法;增加了缓存管理和控制;明确了连接管理;允许持久连接;允许响应数据分块,利于传输大文件;强制要求Host头,让互联网主机托管称为可能
-
Http 2.0
相对于Http 1.1来说:
- 提升访问速度
- 允许多路复用
- 二进制分帧
- 首部压缩
- 服务器推送
重点掌握Http/1.0和Http/1.1,其它了解即可
Http 和 Https
Https可以理解为Http + security!
HTTPS是安全超文本协议,在HTTP基础上有更强的安全性。简单来说,HTTPS是使用TLS/SSL加密的HTTPS协议。
HTTPS和HTTP的区别:
- 安全性上,HTTPS更安全;
- 传输协议上,HTTP明文传输,HTTPS是具有安全性的SSL加密传输
- 连接端口,HTTP:80;HTTPS:443
2、工作原理
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即Web服务器发送所有请求。
Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是我们也可以改为8080等其他端口
3、消息结构
HTTP消息结构分为两种,HTTP请求Request和HTTP响应Response。HTTP请求为客户端–>发请求–>服务器;HTTP响应为服务器–>响应–>客户端。
- HTTP客户端:一个应用程序(如Web浏览器、腾讯视频app),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。
- HTTP服务器:同样也是一个应用程序(通常是一个Web服务器,如Apache Web服务器),通过接收客户端的请求并向客户端发送HTTP响应数据。
- HTTP数据连接:HTTP使用统一资源标识符(URI)来传输数据和建立连接。
- 一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。
客户端请求消息:Request
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(Request line)、请求头部(header)、空行和请求数据四个部分组成,以下图片给出了请求报文的一般格式:
以百度发送请求为例:
以下这四行即为请求行和请求头部信息;
Request URL:https://www.baidu.com/ 请求地址 Request Method:GET get方法/post方法 Status Code:200 OK 状态码:200 Remote (远程) Address:14.215.177.39:443
以下即为请求数据;
Accept:text/html 告诉浏览器,它所支持的数据类型是什么 Accept-Encoding 支持哪种编码格式 Accept-Language:zh-CN,zh;q=0.9 语言 Cache-Control:max-age=0 缓存控制 Connection:keep-alive 告诉浏览器,请求完成是断开还是保持连接
实际上的请求数据远不止如此,但是我们只需要掌握以上截取的内容即可。
服务端响应消息:Response
服务器响应也是由四个部分组成:状态行、消息报头、空行和响应正文
HTTP/1.1 200 OK //第一行:状态行 Date:Sat, 25 July 2021 19:10:59 GMT //第2~4行:消息报头 Content-Type:text/html;charset=ISO-8859-1 Content-Length:122 //空行 <html> //下面都是响应正文 <head> <title>英雄联盟</title> </head> <body> <!-- body goes here --> </body> </html>
我们还是以百度为例:
Cache-Control:private 缓存控制 Connection:Keep-Alive 连接 Content-Encoding:gzip 编码类型 Content-Type:text/html 类型
响应体:
Accept 告诉浏览器,它所支持的数据类型 Accept-Encoding 支持哪种编码格式 BGK UTF-8 GB2312 ISO8859-1 Accept-Language 告诉浏览器,它的语言环境 Cache-Control 缓存控制 Connection 告诉浏览器,请求完成是断开还是保持连接 HOST 主机... Refrush 告诉客户端,多久刷新一次 Location 让网页重新定位
响应状态码
200:请求响应成功
3xx:请求重定向
4xx:找不到资源,比如404——懂的都懂(在线滑稽=。=)
5xx:服务器代码错误
4、请求方法详解
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法:GET,POST和HEAD方法。
HTTP1.1新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE和CONNECT方法。
- GET:请求指定的页面信息,并返回实体主体;
- HEAD:类似GET,知识不返回实体主体;
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改;
- PUT:从客户端向服务器传送的数据取代指定的文档的内容;
- DELETE:请求服务器删除指定的页面;
- CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器;
- OPTIONS:允许客户端查看服务器的性能;
- TRACE:回显服务器收到的请求,主要用于测试或诊断;
- RATCH:是对PUT方法的补充,用来对已知资源进行局部更新。
这篇关于Java Web 入门笔记(三)——HTTP的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南