HTTP请求格式、状态码及常用请求方法

article/2025/9/21 18:36:44

常用的HTTP请求方法,按照RFC2616标准(HTTP1.1)来看,通常有以下8种方法:get、post、put、delete、head、trace、connect、options。

HTTP请求格式

当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:
l 请求方法URI协议/版本
l 请求头(Request Header)
l 请求正文
下面是一个HTTP请求的例子:

GET/sample.jspHTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
username=jinqiao&password=1234

(1) 请求方法URI协议/版本
请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1
以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。
(2) 请求头(Request Header)
请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长

Accept:image/gif.image/jpeg.*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Encoding:gzip,deflate.

请求正文
请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:
username=jinqiao&password=1234
在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。
HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,分别是:
l 协议状态版本代码描述
l 响应头(Response Header)
l 响应正文
下面是一个HTTP响应的例子:

HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112
<html>
<head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>

协议状态代码描述HTTP响应的第一行类似于HTTP请求的第一行,它表示通信所用的协议是HTTP1.1服务器已经成功的处理了客户端发出的请求(200表示成功):
HTTP/1.1 200 OK
响应头(Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等:

Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112

响应正文响应正文就是服务器返回的HTML页面:

<html>
<head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>

响应头和正文之间也必须用空行分隔。  

HTTP应答码

HTTP应答码也称为状态码,它反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型:
1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中
2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK
3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
4XX-客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。
5XX-服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500

对于我们Web开发人员来说掌握HTTP应答码有助于提高Web应用程序调试的效率和准确性。

GET:获取资源

get方法用来请求已被uri识别的资源。这点很好理解,假如资源是个文本或者图片,那么会直接在网页上展示;如果是像CGI那样的程序,则会返回经过执行的结构;如果识别不了,一般会跳出下载窗口。
由于服务器的限制,对get提交通常有长度限制。

GET /index.html HTTP/1.1
Host: www.baidu.com

POST:传输实体主体

post方法用来传输实体的主体。虽然get也可以,但是一般是用post传输。虽然post和get功能很相似,但是post的主要目的并不是用来获取响应的主题内容。
在REST架构标准的网站中,post被用来创建资源。

POST / HTTP/1.1
Host: www.baidu.com
Content-Length: 6

PUT:传输文件

put方法用来传输文件。就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求uri指定的位置中。
由于在HTTP1.1中,put方法本身不带验证机制,因此一般网站并不使用put方法。在REST架构标准的网站中,会开放此方法用来更新资源。

PUT / HTTP/1.1
Host: www.baidu.com
Content-Length: 6

DELETE:删除文件

delete方法用来删除文件,是与put相反的方法。
由但于在HTTP1.1中,delete方法和put方法一样不带验证机制,因此一般网站并不开放delete方法。REST架构标准的网站中,会开放此方法用来作为删除资源。

DELETE /example.html HTTP/1.1
Host: www.baidu.com

HEAD:获取报文首部

head方法和get方法一样,只是不返回报文主体部分。用于确认uri的有效性及资源更新的时间等。从资源操作的语义来讲,一个针对某个目标资源发送的HEAD请求一般不是为了获取目标资源本身的内容,而是得到描述目标资源的元数据信息。服务器一般讲对应资源的元数据置于响应的报头集合返回给客户端,这样的响应一般不具有主体部分。

GET /index.html HTTP/1.1
Host: www.baidu.com

TRACE:追踪路径

trace用于远程诊断服务器,它会把服务器之前的请求通信环会给客户端。不过该方法很少 用到,再加上支持该方式的服务器存在跨站脚本漏洞(XST攻击),通常就更不会用到了。
Apache下禁用TRACE

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]

CONNECT:要求用隧道协议链接代理

connect用于代理进行传输,如使用SSL
使用格式如下:

CONNECT 代理服务器名:端口号 HTTP版本

OPTIONS:询问支持的方法

options用于询问当前请求uri指定的资源支持的方法,从而确定确定针对某当前uri的请求必须具有怎样的约束(比如应该采用怎样的HTTP方法以及自定义的请求报头),然后根据其约束发送真正的请求。比如针对“跨域资源”的预检(Preflight)请求采用的HTTP方法就是OPTIONS。

OPTIONS /index.html HTTP/1.1
Host: www.baidu.com

常见方法支持的HTTP协议版本

HTTP1.0、HTTP1.1支持的方法


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

相关文章

在使用win 7 无线承载网络时,启动该服务时,有时会提示:组或资源的状态不是执行请求操作的正确状态。 网上有文章指出,解决这个问题的方法是在设备管理器中启动“Microsoft托管网络虚拟适配

在使用win 7 无线承载网络时&#xff0c;启动该服务时&#xff0c;有时会提示&#xff1a;组或资源的状态不是执行请求操作的正确状态。 网上有文章指出&#xff0c;解决这个问题的方法是在设备管理器中启动“Microsoft托管网络虚拟适配器”&#xff0c;见 http://jingyan.baid…

无法启动承载网络。 组或资源的状态不是执行请求操作的正确状态,解决办法。(转)...

摘自:http://www.lihuoqing.cn/other/172.html 以前用的好好的&#xff0c;这段时间就出现以下情况&#xff1a; C:\windows\system32>netsh wlan start hostednetwork 无法启动承载网络。 组或资源的状态不是执行请求操作的正确状态。 问题截图为以下图片的第一个红色框&am…

win10 更新之后,无法开启wifi,“组或资源的状态不是执行请求操作的正确状态”...

netsh wlan set hostednetwork modeallow ssidwifi_Tr key00147258 netsh wlan start hostednetwork 请参考最新博客&#xff1a;http://www.cnblogs.com/tanrong/p/8184325.html 已尝试解决办法&#xff1a; 1. http://jingyan.baidu.com/article/af9f5a2d2ad52943150a457f.h…

无线承载网络 组或资源的状态不是执行请求操作的正确状态 解决方法

在使用win 7 无线承载网络时,启动该服务时,有时会提示:组或资源的状态不是执行请求操作的正确状态。 网上有文章指出,解决这个问题的方法是在设备管理器中启动“Microsoft托管网络虚拟适配器”,见 http://jingyan.baidu.com/article/3a2f7c2e4f9a6326afd61132.html 经过实…

cmd中执行netsh wlan start hostednetwork 无法启动承载网络。 组或资源的状态不是执行请求操作的正确状态。

cmd中执行netsh wlan start hostednetwork 无法启动承载网络。 组或资源的状态不是执行请求操作的正确状态。 解决办法&#xff1a; 1、打开网络共享中心&#xff0c;点击“更改适配器”&#xff0c;如果没有看到“无线网络连接2”的网络连接&#xff0c;请尝试以下步骤&#…

JavaIO:使用封装好的工具类CommonsIO

1.首先需要在Apache的官网上下载工具类的jar 包 2.导入jar包&#xff1a;打开文件——项目结构——依赖 3.CommonsIO核心操作&#xff1a;FileUtils类 1.得到文件的大小&#xff1a; long len FileUtils.sizeOf(new File("sc.png")); 2.列出目录下所有文件&#…

java递归获取文件树目录列表

直接上代码: public static List<FileTreeNode> getFileTree(File file) {List<FileTreeNode> baseTreeNodes new ArrayList<>();File[] childFiles file.listFiles();if (childFiles ! null) {for (File listFile : childFiles) {FileTreeNode baseTreeN…

FileFilter过滤器的使用方法

过滤器原理 public static void main(String[] args) {File f1 new File("D:\\FA\\JAVAspace\\FightingLangOwner\\Demo\\src\\DemoFile");getFileName(f1);}public static void getFileName(File f1){File[] arrFile f1.listFiles(new FileFilterImp());for (Fil…

Java8实战笔记:第一部分(1~3章)

1.为什么关心Java8 和大多数书本一样&#xff0c;书本的第一章都起统领全书的作用&#xff0c;上来就是一个疑问&#xff1f;Java8怎么还在变&#xff0c;语言的变化离不开程序员对性能和代码简化的需求&#xff0c;进而引出了流处理、Lambda表达式、方法引用、并行化的相关概…

java 遍历目录下所有文件_java实现遍历某个目录(包括子目录)下的所有文件

在java中遍历一个文件夹里边的所有文件,可以有两种方式: 一、递归遍历 通常也是开发者第一时间能想到的方法。 递归遍历的优点是: 实现起来相对简单,代码量相对较少,执行效率较高。 缺点是: 比较吃内存,对硬件要求较高。 在线视频教程分享:java在线视频 具体算法如下:…

java解压缩gzip_利用Java实现压缩与解压缩(zip、gzip)支持中文路径

zip扮演着归档和压缩两个角色&#xff1b;gzip并不将文件归档&#xff0c;仅只是对单个文件进行压缩&#xff0c;所以&#xff0c;在UNIX平台上&#xff0c;命令tar通常用来创建一个档案文件&#xff0c;然后命令gzip来将档案文件压缩。 Java I/O类库还收录了一些能读写压缩格式…

ubuntu-20.04 Astra-pro configuration

In function ‘char* strncpy(char*, const char*, size_t)’, inlined from ‘Agent::queryLocalData(std::string&, ResponseDataT&)’ at ./Agent/Agent.cc:715:14: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:34: error: ‘char* __builtin_s…

Java中获取本地某一个目录下的所有文件和文件夹

在从事web开发工作中&#xff0c;经常需要对本地某一个目录下的文件进行处理&#xff0c;而在这之前&#xff0c;我们需要做的就是获取到这个目录下的文件。 1 String filepath "D:\file";//D盘下的file文件夹的目录 2 File file new File(filepath);//File类型可以…

企业微信和个人微信的区别

从 个人身份、朋友圈、加好友、社群管理、数据统计&#xff0c;这5个方面来进行对比&#xff1a; 一、 个人身份 企业微信和个人微信有一个很大的区别&#xff0c;就是企业品牌的展示。 企业微信自带一个品牌的小尾巴&#xff0c;当用户初次添加你时&#xff0c;企微自带的品牌…

企业微信or个人微信?三个角度让你不再纠结

如今承载了12亿用户的企业微信已经与微信环境做到高度的融合互通&#xff0c;如实现了互相添加好友等功能&#xff0c;可以看出腾讯推动企业微信扩大商用场景的决心。回想2020年5月某社群工具被封杀后&#xff0c;微信社群运营就一夜回到解放前人工成本高企的状态&#xff0c;那…

安卓移动开发初步——微信页面制作

进行APP门户制作时选择在Android studio中建立简单的微信页面&#xff0c;内容包括&#xff1a; ①页面布局与微信页面基本相似&#xff1b; ②点击图标能实现页面的切换&#xff1b; ③点击图标时有选中效果(图标亮起)&#xff1b; 目录 效果图 底部布局实现 顶部布局实现…

微信小程序 java家庭个人收支理财记账本springboot

该系统主要分为登录注册、资金管理、统计报表、趋势图线、个人信息五大模块。 登录管理:新用户填写相关的注册信息&#xff0c;获得登陆账号和密码&#xff0c;已注册用户通过账号和密码登录系统。 资金管理:用户登录到系统后可以通过资金管理对家庭资金进行管理&#xff0c;包…

微信公众号基础入门知识

微信公众号的类型微信公众号一共有四种账号类型&#xff0c;除了我们日常接触的订阅号和服务号外&#xff0c;还包括企业微信和小程序。 订阅号 订阅号主要偏向于为用户传达资讯&#xff0c;其功能类似于报纸杂志&#xff0c;为读者传播消息&#xff0c;每天可以群发一次消息。…

如何零基础创建自己的微信小程序

目录 创建微信小程序 步骤&#xff1a; 1、打开浏览器搜索微信公众平台 2、一般是先要注册的&#xff08;当然已经有的就不需要了&#xff09; 3、选择注册的类型 关于“小程序怎么开发自己的小程序”这个不少人关注的问题&#xff0c;小编针对性的给出详细教程&#xff0c;…

微信云托管体验

最近在了解微信云托管&#xff0c;体验了一番&#xff0c;很好用。 我觉得微信云托管是降低了运维的难度&#xff0c;可以不用在购买服务器了&#xff0c;直接使用微信云托管环境很方便。 摘自微信官方文档&#xff1a;微信云托管 是微信团队提供的以云原生为基础的&#xff0…