JavaWeb——HTTP详解

article/2025/9/12 14:39:39

文章目录

    • 什么是HTTP
    • HTTP发展阶段
    • HTTP请求
      • 1.请求行
        • 请求方式
      • 2.消息头
    • HTTP响应
      • 1.响应体
      • 2.响应状态码
        • 常见状态码
        • HTTP状态码分类
        • HTTP状态码列表:

什么是HTTP

  • 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

  • HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

  • HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

HTTP发展阶段

HTTP/1.0:客户端可以与服务器连接,连接后只能获得一个web资源,获得完资源后就断开连接了

HTTP/1.1:客户端可以与服务器连接,连接后可以获得多个web资源。

HTTP请求

客户端–>请求–>服务器

以请求百度为例

Request URL: https://www.baidu.com/  请求地址
Request Method: GET 请求方法get/post
Status Code: 200 OK  状态码
Remote Address: 36.152.44.96:443   远程地址ip+端口
Accept: text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9  语言
Cache-Control: max-age=0
Connection: keep-alive

1.请求行

在这里插入图片描述

请求行中的请求方式:GET

请求方式

HTTP1.0 定义了三种请求方法:GET, POST 和 HEAD方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

序号方法描述
1GET请求指定的页面信息,并返回实体主体。请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容。不安全,但高效。
2HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。请求能够携带的参数,大小没有限制,不会在浏览器的URL地址栏显示数据内容。安全,但不高效。
4PUT从客户端向服务器传送的数据取代指定的文档的内容。
5DELETE请求服务器删除指定的页面。
6CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要用于测试或诊断。
9PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新 。

2.消息头

在这里插入图片描述

Accept: 告诉浏览器,请求支持的数据类型
Accept-Encoding: 支持的编码格式
Accept-Language:   语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完是断开还是保持连接

HTTP响应

服务器–>响应–>客户端

以百度响应为例

Request URL: https://www.baidu.com/  请求地址
Request Method: GET 请求方法get/post
Status Code: 200 OK  状态码
Remote Address: 36.152.44.96:443   远程地址ip+端口
Cache-Control: private  缓存控制
Connection: keep-alive  保持连接
Content-Encoding: gzip  编码
Content-Type: text/html;charset=utf-8  告诉客户端实际返回的内容的内容类型。

1.响应体

Accept: 告诉浏览器,请求支持的数据类型
Accept-Encoding: 支持的编码格式
Accept-Language:   语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完是断开还是保持连接
Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计。
Location:表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的    sendRedirect方法,该方法同时设置状态代码为302。
Set-Cookie:设置和页面关联的Cookie。

2.响应状态码

常见状态码

200:请求响应成功

301:请求重定向

  • 请求重定向(Redirect):通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。

404: 找不到资源

500:服务器代码错误

HTTP状态码分类

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

HTTP状态码列表:

状态码状态码英文名称中文描述
100Continue继续。客户端应继续其请求
101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200OK请求成功。一般用于GET与POST请求
201Created已创建。成功请求并创建了新的资源
202Accepted已接受。已经接受请求,但未处理完成
203Non-Authoritative Information非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204No Content无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205Reset Content重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206Partial Content部分内容。服务器成功处理了部分GET请求
300Multiple Choices多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303See Other查看其它地址。与301类似。使用GET和POST请求查看
304Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305Use Proxy使用代理。所请求的资源必须通过代理访问
306Unused已经被废弃的HTTP状态码
307Temporary Redirect临时重定向。与302类似。使用GET请求重定向
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
402Payment Required保留,将来使用
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405Method Not Allowed客户端请求中的方法被禁止
406Not Acceptable服务器无法根据客户端请求的内容特性完成请求
407Proxy Authentication Required请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408Request Time-out服务器等待客户端发送的请求时间过长,超时
409Conflict服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410Gone客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411Length Required服务器无法处理客户端发送的不带Content-Length的请求信息
412Precondition Failed客户端请求信息的先决条件错误
413Request Entity Too Large由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414Request-URI Too Large请求的URI过长(URI通常为网址),服务器无法处理
415Unsupported Media Type服务器无法处理请求附带的媒体格式
416Requested range not satisfiable客户端请求的范围无效
417Expectation Failed服务器无法满足Expect的请求头信息
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求的功能,无法完成请求
502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504Gateway Time-out充当网关或代理的服务器,未及时从远端服务器获取请求
505HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理

http://chatgpt.dhexx.cn/article/PXZfL2RG.shtml

相关文章

HTTP协议(详解)

HTTP协议(详解) HTTP协议:全称为Hyper Text Transfer Protocol(超文本传输协议)。HTTP协议是用于从(WWW:World Wide Web,简称万维网)服务器传输超文本到本地浏览器的传输…

HTTP协议的详细介绍

目录 一、何为HTTP协议 1.HTTP协议详细信息 2.HTTPS协议: 3.HTTP协议的特点 二、HTTP协议 请求方式 HTTP1. 0定义了三种请求方法: 1.GET 2.POST 3.HEAD HTTP1. 1 新增了五种请求方法: 1.OPTIONS 2.PUT 3.DELETE 4.TRACE 5.CONN…

看完这篇HTTP,跟面试官扯皮就没问题了

我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电…

Python挑战游戏( PythonChallenge)闯关之路Level- 5

时隔两个月, 又重新回来写博客了 今天重新来做这个挑战题目 首先入口地址:http://www.pythonchallenge.com/pc/def/peak.html 打开来看, 没错,你没有看错,只有一副画 然后画的下面 有一句话 "pronounce it&quo…

pythonchallenge第0关

pythonchallenge第0关 点击打开链接 仔细观察第0关的图片:数字以英语提示(Hint:try to change the URL address 尝试改变 统一资源定位符的地址) 这就很简单了。 >>> 2 ** 38 274877906944L >>> 也即:http…

Python挑战游戏( PythonChallenge)闯关之路Level- 6

来来来,难得今天有点时间,闯关继续 照旧,先进入闯关入口,看一看这一关是怎么回事:http://www.pythonchallenge.com/pc/def/channel.html 单纯的从网页页面上来看, 一个有拉锁的图片, 下面一个写…

Python菜鸟快乐游戏编程_pygame

曾经我也沉迷游戏,连续玩十几个小时竞技游戏可以不吃饭。游戏只是别人写好程序,与其沉迷于他人设计好程序,为何不自己设计游戏,至少学会编程后,我们的月收入上万不是问题。于是便有了录制这部pygame菜鸟游戏编程教程动…

【pythonchallenge】【问题1】

网页标题:What about making trans?问题网址:http://www.pythonchallenge.com/pc/def/map.html问题描述:问题给了个图片,是map的对应关系, everybody thinks twice before solving this. g fmnc wms bgblr rpylqjyrc…

Python挑战游戏( PythonChallenge)闯关之路Level- 1

闯关过程 关卡入口地址: http://www.pythonchallenge.com/pc/def/map.html 打开页面是这样的: 在图中的你内容,可以看到 K->MO->QE->G 直观上感受是,字符串对应解析 也就是说,26个英文字符依次和图片下面的…

chatgpt赋能Python-pythonchallenge

Python Challenge: 挑战你的Python技能 如果你正在寻找一种提高Python编程技能的有趣方法,那么Python Challenge是一个不错的选择。Python Challenge是一个在线的puzzle游戏,每个挑战都需要使用Python编写程序来解决。这些挑战是由一个名叫Nadav Samet的…

Python Challenge 第2关

http://www.pythonchallenge.com/pc/def/ocr.html recognize the characters. maybe they are in the book, but MAYBE they are in the page source. 第2关:从现在开始,要从页面中寻找答案了。其实是在注释中。从页面源码中可以发现其有一段注释&#x…

pythonchallenge(0-4)

pythonchallenge 0:网址:http://www.pythonchallenge.com/pc/def/0.html 网页提示:try to change the URL addres。网站的图片提示如下: 图片的意思是网址为2的38次方 print(2**38)得到下一关的网址:http://www.pyt…

Python Challenge

Level 0 [1] Hint: try to change the URL address. 第零关主要让人熟悉游戏规则和形式。首先观察标签栏主题显示的是warming up,表明这关的主题是热身。页面图片下标注一行小提示尝试改变url的地址。在没有别的提示下,明显是改成图片内的内容&#xff0…

pythonchallenge(5-9)

pythonchallenge 5:网址:http://www.pythonchallenge.com/pc/def/peak.html 查看页面源代码有提示.peak hell sounds familiar.考察的是标准库pickle的。pickle模块用来实现python对象的序列化,反序列化。构建payload: import urllib.request as urt i…

Python Challenge 题解 [0-4]

Challenge 0 转到 Python Challenge 题目0 分析 从图片中可看出,该题的答案应为2的38次方 完整程序 2**38Challenge 2 转到 Python Challenge 题目 everybody thinks twice before solving this. g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dm…

pythonchallenge闯关——第一弹

说在前面 pythonchallenge是一个很古老的很优秀的一款python学习路径,我也是知乎搜到后,这里安利给大家,网址是: pythonchallenge 界面是介样子的 : P.S. 本人也是python小白,在这里记录自己的学习路径&…

PythonChallenge闯关详解

前言 PythonChallenge是国外的一位工程师设计的一套编程闯关游戏,网址:PythonChallenge,每一关都可以用一段Python程序解决问题得到下一关的入口,本博文作为一个学习笔记,通过边学边记的方式分享我的闯关经验。 0 图片…

scanf返回值被忽略问题

解决Visual Studio中scanf返回值被忽略问题 最近在使用Visual Studio编写c语言时遇到了scanf返回值被忽略问题 总结了如下几种解决方法: 方法一(不建议) scanf修改成 scanf_s 可以说scanf_s是vs编译器特有的,它认为scanf不安全&…

scanf库函数的返回值

目录 一背景: 二 scanf返回值规则 1.在格式字符串为用%d的情况下 (1)输入5 6此时scanf能正确读入的数据为两个,返回值为2 scanf正确读入概念补充 (2)如果输入5 t此时能正确读入的数据为1个,返回值为1。 (3)如果输入1 2.5 (4)输入t 5&a…

scanf的返回值被忽略

scanf的返回值被忽略 在编译器VS2019和VS2022中,在使用scanf函数时会报错,具体错误scanf的返回值被忽略。 解决办法 方法一 可以直接将scanf改成scanf_s,因为编译器觉得scanf_s这是比较安全的函数。 方法二 我们可以关闭VS2019和VS2022编译器的安全检查…