JavaWeb:HTTP概述

淡淡的烟草味﹌ 2024-03-30 12:30 188阅读 0赞

1.1 简介

HTTP概念

HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

  • 数据传输的规则指的是请求数据和响应数据需要按照指定的格式进行传输。
  • 如果想知道具体的格式,可以打开浏览器,点击F12打开开发者工具,点击Network来查看某一次请求的请求数据和响应数据具体的格式内容,如下图所示:

在这里插入图片描述

注意:在浏览器中如果看不到上述内容,需要清除浏览器的浏览数据。chrome浏览器可以使用ctrl+shift+Del进行清除。

HTTP协议特点

HTTP协议有它自己的一些特点,分别是:

  • 基于TCP协议:面向连接,安全

    TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全。

  • 基于请求-响应模型的:一次请求对应一次响应

    请求和响应是一一对应关系

  • HTTP协议是无状态协议:对于事物处理没有记忆能力。每次请求-响应都是独立的

    无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。这种特性有优点也有缺点,

    • 缺点:多次请求间不能共享数据
    • 优点:速度快

    请求之间无法共享数据会引发的问题,如:

    • 京东购物,加入购物车去购物车结算是两次请求,
    • HTTP协议的无状态特性,加入购物车请求响应结束后,并未记录加入购物车是何商品
    • 发起去购物车结算的请求后,因为无法获取哪些商品加入了购物车,会导致此次请求无法正确展示数据

    具体使用的时候,我们发现京东是可以正常展示数据的,原因是Java早已考虑到这个问题,并提出了使用会话技术(Cookie、Session)来解决这个问题。HTTP协议是规定了请求和响应数据的格式,那具体的格式是什么呢?

1.2 请求数据格式

2.2.1 格式介绍

请求数据总共分为三部分内容,分别是请求行、请求头、请求体

在这里插入图片描述

  • 请求行: HTTP请求中的第一行数据,请求行包含三块内容,分别是GET[请求方式] /[请求URL路径] HTTP/1.1[HTTP协议及版本]

    请求方式有七种,最常用的是GETPOST

  • 请求头:第二行开始,格式为key: value形式

    请求头中会包含若干个属性,常见的HTTP请求头有:

    1. Host: 表示请求的主机名
    2. User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko
    3. Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
    4. Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
    5. Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。

    这些数据有什么用处?

    举例说明:服务端可以根据请求头中的内容来获取客户端的相关信息,有了这些信息服务端就可以处理不同的业务需求,比如:

    • 不同浏览器解析HTMLCSS标签的结果会有不一致,所以就会导致相同的代码在不同的浏览器会出现不同的效果
    • 服务端根据客户端请求头中的数据获取到客户端的浏览器类型,就可以根据不同的浏览器设置不同的代码来达到一致的效果
    • 这就是我们常说的浏览器兼容问题
  • 请求体:POST请求的最后一部分,存储请求参数

    在这里插入图片描述

    如上图红线框的内容就是请求体的内容,请求体和请求头之间是有一条线隔开。此时浏览器发送的是POST请求,为什么不能使用GET呢?这时就需要知道GETPOST两个请求之间的区别了:

    • GET请求请求参数在请求行中,没有请求体,POST请求请求参数在请求体中
    • GET请求请求参数大小有限制,POST没有

1.3 响应数据格式

1.3.1 格式介绍

响应数据总共分为三部分内容,分别是响应行、响应头、响应体

在这里插入图片描述

  • 响应行:响应数据的第一行,响应行包含三块内容,分别是HTTP/1.1[HTTP协议及版本] 200[响应状态码] ok[状态码的描述]
  • 响应头:第二行开始,格式为key:value形式

    响应头中会包含若干个属性,常见的HTTP响应头有:

    1. Content-Type:表示该响应内容的类型,例如text/htmlimage/jpeg
    2. Content-Length:表示该响应内容的长度(字节数);
    3. Content-Encoding:表示该响应压缩算法,例如gzip
    4. Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300
  • 响应体: 最后一部分。存放响应数据

2.3.2 响应状态码

状态码大类





























状态码分类 说明
1xx 响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它
2xx 成功——表示请求已经被成功接收,处理已完成
3xx 重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。
4xx 客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx 服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等
常见的响应状态码











































































状态码 英文描述 解释
200 OK 客户端请求成功,即处理成功,这是我们最想看到的状态码
302 Found 指示所请求的资源已移动到由Location响应头给定的URL,浏览器会自动重新访问到这个页面
304 Not Modified 告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
403 Forbidden 服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404 Not Found 请求资源不存在,一般是URL输入有误,或者网站资源被删除了
428 Precondition Required 服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429 Too Many Requests 太多请求,可以限制客户端请求某个资源的数量,配合 Retry-After(多长时间后可以请求)响应头一起使用
431 Request Header Fields Too Large 请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
405 Method Not Allowed 请求方式有误,比如应该用GET请求方式的资源,用了POST
500 Internal Server Error 服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503 Service Unavailable 服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好
511 Network Authentication Required 客户端需要进行身份验证才能获得网络访问权限

发表评论

表情:
评论列表 (有 0 条评论,188人围观)

还没有评论,来说两句吧...

相关阅读

    相关 概述

    概述 一、计算机网络在信息时代的作用 1、21世纪重要的三大特征 2、三大网络及其作用 3、Internet的译名

    相关 UML概述

        UML视频一直在看,但是总觉得没有什么思路,知识都是零散的、片面的。最后复习阶段老师重新理了一下思路,我才觉得有点清晰了。所以,又回头把UML概述部分总结了一下。  

    相关 UML—概述

            UML视频从总体上来说,条理清楚,知识点也没有那么散,而且在视频中还简单点的介绍了一下设计模式,额。。。你这是在吊我的胃口吗??不过我还是很喜欢的,总体上很赞!

    相关 UML概述

            视频看了4集,为免以后什么都想不起来,赶紧先把这段时间学的东西总结一下。前4集讲UML概述,宏观论述了UML的概念和发展历史,重点是UML的构成。

    相关 BGP概述

    BGP是为了在AS之间更高效率的传递路由和维护大量的路由而产生的一个外部网关协议。 BGP定义 BGP(Border Gateway Protocol)是一种用于自治系

    相关 Kubernates——概述

    Kubernates是什么 Kubernetes是Google开源的容器集群管理系统。它构建在Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩