HTTP请求方法

本文详细介绍了HTTP1.0和HTTP1.1中的请求方法,包括GET、POST、HEAD的基本概念和用途。GET用于获取资源,POST用于提交数据,HEAD则仅获取响应头部。此外,还探讨了POST的四种Content-Type:multipart/form-data、application/x-www-form-urlencoded、application/json及其他特殊类型,以及HTTP1.1中新增的OPTIONS、PUT、PATCH、DELETE、TRACE和CONNECT方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



HTTP1.0的请求方法

HTTP1.0的三种请求方法

GET
  • 请求指定的页面信息,并返回实体主体。
  • GET请求请提交的数据放置在HTTP请求协议头中,GET方法通过URL请求来传递用户的输入,GET方式的提交你需要用Request.QueryString来取得变量的值。
  • GET方法提交数据,可能会带来安全性的问题,数据被浏览器缓存。
  • GET请求有长度限制,只支持2048个字符。
// 发起请求
http://localhost/general/form/getpost.asp?Text=Hello+World
// 解析请求参数(asp语法)
<% If Request.QueryString(“Text”) <> ““ Then %> 
通过get方法传递来的字符串是: “<B><%= Request.QueryString(“Text”) %></B><BR> 
<% End If %> 
HEAD
  • 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
POST
  • 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
  • POST请求可能会导致新的资源的建立和/或已有资源的修改。
  • POST方式提交时,你必须通过Request.Form来访问提交的内容
// 发起请求
http://localhost/general/form/getpost.asp
// 解析请求参数(asp语法)
<% If Request.Form(“Text”) <> ““ Then %> 
通过Post方法传递来的字符串是: “<B><%= Request.Form(“Text”) %></B><BR> 
<% End If %> 

GET请求的标准格式

常见发起GET请求的方式有:URL 、src/href、表单(form)。

GET方式提交数据的格式:

index.php?userName=jack&password=123 

注意:

index.php?key=value&key=value。 userName=jack&password=123 叫做查询字符串

参数名与参数值之间没有空格

参数值不需要使用单双引号包括

GET方式提交数据特点:

1、get方式在url后面拼接参数,只能以文本的形式传递参数。

2、传递的数据量小,4kb左右(不同浏览器会有差异)。

3、安全性低,会将信息显示在地址栏。

4、速度快,通常用于对安全性要求不高的请求。

POST请求提交表单,上传文件的方法

POST就是发送、提交。可以向指定的资源提交要被处理的数据。

如果使用表单方式进行提交,表单的method必须设置为POST。

post方式提交的特点:

1、post提交数据相对于get的安全性高一些。(注意:抓包软件也会抓到post的内容,安全性要求高可以进行加密)

2、传递数据量大,请求对数据长度没有要求。

3、请求不会被缓存,也不会保留在浏览器的历史记录中。

4、用于密码等安全性要求高的场合,提交数据量较大的场合,如上传文件,发布文章等。

5、POST方式提交数据上限默认为8M(可以在PHP的配置文件post_max_size选项中修改)

01 multipart/form-data

multipart/form-data 是新增的编码类型,以提高二进制文件的传输效率。这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。 某表单的源代码如下:

<form action="upload.php" enctype="multipart/form-data" method="post">
<input name="myflie" type="file" />
<input type="submit" />

当在该表单输入内容进行提交的时候就会产生一个POST请求,其中的Content-Type参数值就会被设置为multipart/form-data

同时还会因为其特殊的格式增加一个boundary参数,这个参数是一个分隔符,分隔多个文件、表单项,他的值要足够的复杂或者随机,以保证不会与上传表单或者文件的内容出现重复。

请求头部分内容如下:

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
 
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
 
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
 
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

可以看到消息体被boundary分隔开了,整个消息体以 --boundary开始,各个表单的内容使用–boundary分隔开,最后使用–boundary–来结束

02 application/x-www-form-urlencoded

这是最常见的POST提交数据的方法了吧。在源代码未知道enctype的时候默认就使用这种方式来提交。请求头类似于这样:

POST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8
 
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3

可以看到消息体中提交的内容使用&进行连接,同时使用了URL编码,**所以就像是把GET请求的参数放到消息体中一样。**大部分服务端语言都对这种方式有很好的支持。很多时候,我们用 Ajax 提交数据时,也是使用这种方式。例如 JQuery 和 QWrap 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。

03 application/json

由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。同时json可以支持比普通的键值对更加复杂的数据,因此越来越多的人开始使用这种方式进行数据传输。

POST http://www.example.com HTTP/1.1
Content-Type: application/json;charset=utf-8
 
{"title":"test","sub":[1,2,3]}
04 其他特殊content-type

看这里

HEAD请求与GET请求的区别

HEAD方法和GET方法一样,只是不返回报文主体部分,只请求页面的首部。用于确认URI的有效性及资源更新的日期时间等。

HTTP1.1新增的请求方法

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值