HTTP协议中GET、POST和HEAD的介绍(请求方式总结)

HTTP协议中GET、POST和HEAD的介绍(请求方式总结)

GET: 请求指定的页面信息,并返回实体主体。
HEAD: 只请求页面的首部。
POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE: 请求服务器删除指定的页面。
OPTIONS: 允许客户端查看服务器的性能。
TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。
PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
MOVE: 请求服务器将指定的页面移至另一个网络地址。
COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
LINK: 请求服务器建立链接关系。
UNLINK: 断开链接关系。
WRAPPED: 允许客户端发送经过封装的请求。
Extension-mothed:在不改动协议的前提下,可增加另外的方法。

GET: 请求指定的页面信息,并返回实体主体。

 HEAD: 只请求页面的首部。

 POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。





       HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。 比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解);
在FORM提交的时候,如果不指定Method,则默认为GET请 求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为 该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
GET方式提交的数据最多只能有1024字节,而POST则没有此限制。  


在表单里使用”post”和”get”有什么区别

在Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,post和get方法在使用上至少有两点不同:
1、Get方法通过URL请求来传递用户的输入。Post方法通过另外的形式。
2、Get方式的提交你需要用Request.QueryString来取得变量的值,而Post方式提交时,你必须通过Request.Form来访问提交的内容。

仔细研究下面的代码。你可以运行之来感受一下:

代码
<!–两个Form只有Method属性不同–>
<FORM ACTION=“getpost.asp” METHOD=“get”>
<INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”></INPUT>
<INPUT TYPE=“submit” VALUE=“Method=Get”></INPUT>
</FORM>
<BR>
<FORM ACTION=“getpost.asp” METHOD=“post”>
<INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”></INPUT>
<INPUT TYPE=“submit” VALUE=“Method=Post”></INPUT>
</FORM>

<BR>
<BR>

<% If Request.QueryString(“Text”) <> ““ Then %>
通过get方法传递来的字符串是: “<B><%= Request.QueryString(“Text”) %></B>“<BR>
<% End If %>

<% If Request.Form(“Text”) <> ““ Then %>
通过Post方法传递来的字符串是: “<B><%= Request.Form(“Text”) %></B>“<BR>
<% End If %>

说明
把上面的代码保存为getpost.asp,然后运行,首先测试post方法,这时候,浏览器的url并没有什么变化,返回的结果是:
通过Post方法传递来的字符串是: “Hello World”
然后测试用get方法提交,请注意,浏览器的url变成了:
http://localhost/general/form/getpost.asp?Text=Hello+World
而返回的结果是:
通过get方法传递来的字符串是: “Hello World”
最后再通过post方法提交,浏览器的url还是:
http://localhost/general/form/getpost.asp?Text=Hello+World
而返回的结果变成:
通过get方法传递来的字符串是: “Hello World”
通过Post方法传递来的字符串是: “Hello World”

提示
通过get方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过get方法提交数据时,用户名和密码将出现在URL上。如果:
1、 登陆页面可以被浏览器缓存;
2、 其他人可以访问客户的这台机器。
那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,get方法会带来严重的安全性问题。
建议
在Form中,建议使用post方法。

 

如果用HEAD方法请求的话,则服务器返回的只是响应标题,而不会返回被请求的文挡,HEAD方法通用于一些搜索引擎

——————————————————————————————————————–

GET: 请求指定的页面信息,并返回实体主体。
HEAD: 只请求页面的首部。
POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE: 请求服务器删除指定的页面。
OPTIONS: 允许客户端查看服务器的性能。
TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。
PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
MOVE: 请求服务器将指定的页面移至另一个网络地址。
COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
LINK: 请求服务器建立链接关系。
UNLINK: 断开链接关系。
WRAPPED: 允许客户端发送经过封装的请求。
Extension-mothed:在不改动协议的前提下,可增加另外的方法。

比如:

GET /index.html HTTP/1.1

Accept: text/plain /*纯ASCII码文本文件*/

Accept: text/html /*HTML文本文件*/

User-Agent:Mozilla/4.5(WinNT)

说明浏览器使用Get方法请求文档/index.html。浏览器则只允许接收纯ASCII码文本文件和HTML文本文件,其使用的引擎是Mozilla/4.5(Netscape)。

当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。现将5类状态码详细列出:

① 客户方错误

100  继续

101  交换协议

② 成功

200  OK

201  已创建

202  接收

203  非认证信息

204  无内容

205  重置内容

206  部分内容

③ 重定向

300  多路选择

301  永久转移

302  暂时转移

303  参见其它

304  未修改(Not Modified)

305  使用代理

④ 客户方错误

400  错误请求(Bad Request)

401  未认证

402  需要付费

403  禁止(Forbidden)

404  未找到(Not Found)

405  方法不允许

406  不接受

407  需要代理认证

408  请求超时

409  冲突

410  失败

411  需要长度

412  条件失败

413  请求实体太大

414  请求URI太长

415  不支持媒体类型

⑤ 服务器错误

500  服务器内部错误

501  未实现(Not Implemented)

502  网关失败

504  网关超时

505 HTTP版本不支持

比如:(在《TELNET……》一文中用telnet登陆80端口,相同的方法用在HTTP/1.1中,会发现没有显示,下面补充说明之)

telnet www.fudan.edu.cn 80

HEAD / HTTP/1.1

host:www.fudan.edu.cn /*本行为输入内容*/

HTTP/1.1 501 Method Not Implemented

Date: Web, 01 Nov 2000 07:12:29 GMT /*当前的日期/时间*/

Server: Apache/1.3.12 (Unix) /*Web服务器信息*/

Allow: GET, HEAD, OPTION, TRACE /*支持的方法类型*/

Connection: close

Connect-Type: Text/html; charset=iso-8859-1/*连接的媒体类型*/

<!DOCTYPE HTML PUBLIG “-//IETF//DTD HTML 2.0//EN”>

<HTML><HEAD>

<TITLE>501 Method

Not Implemented</TITLE>

</HEAD><BODY>

<H1>Method Not Implemented</H1>

head to /inde

x.html not supported.<P>

Invalid method in request head / htp/1.1<P>

<HR>

<ADDRESS>

Apache/1.3.12 Server at www.fudan.edu.cn Port 80</ADDRESS>

</BODY></HTML>

关于实体头部的内容还可以有:

Last Modified :请求文档的最近修改时间。

Expires :请求文档的过期时间。

Connect-length:文档数据的长度。

WWW-authenricate:通知客户端需要的认证信息。

Connect-encoding :说明有无使用压缩技术。

Transfer-encoding :说明采用的编码变换类型。

随着Internet的发展,下一代的HTTP协议HTTP-ng已经在酝酿之中,它将会提供更好的安全性、更快的速度,其改进要点为:模块化强、网络效率高、安全性更好、结构更简单。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100460.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月10日 下午6:00
下一篇 2021年5月10日 下午7:00


相关推荐

  • java 分行符_java换行符有哪些

    java 分行符_java换行符有哪些在 java 中可以使用的换行符有 n 表示新行 r 表示回车 r n 在 java 中需要在字符串 文本 末尾包含换行符 n r 或者 r n 就可以进行换行 换行符 n n 也称换行 一般在基于 Unix Linux NewMac 的操作系统中使用 示例 publicclassA publicstatic String args

    2026年3月18日
    2
  • 产品经理必会知识:万字长文 | 史上最全的付费会员体系分析

    产品经理必会知识:万字长文 | 史上最全的付费会员体系分析1如何理解付费会员体系?老生常谈的AARRR模型中,会员体系在活跃、留存、收入端是最常见的运营手段,它有两种类型: 付费会员体系:通过付费,购买高价值、差异化的权益。 例:88VIP、京东PLUS、腾讯视频VIP、知乎盐选会员。 成长会员体系:通过特定用户行为带来的积累,获得等级成长及差异化权益(一般为低价值)。 例:大众点评会员、滴滴橙长会员、支付宝会员。 会员体系的核心目标,是拉升「付费用户比例」、「用户生命周期」、「ARPU」;在用户价值层面体现为…

    2022年6月16日
    53
  • pycharm2017 license server_pycharm专业版永久激活

    pycharm2017 license server_pycharm专业版永久激活步骤很简单:打开安装好的软件 选择ActivatenewlicensewithLicenseserver 在Licenseseveraddress处填入https://jetlicense.nss.im/ 点击Activate进行认证即可

    2022年8月26日
    52
  • Vue的生命周期的详解

    Vue的生命周期的详解Vue 的生命周期 Vue 的生命周期是每个使用 Vue 框架的前端人员都需要掌握的知识 以此作为记录 Vue 的生命周期就是 vue 实例从创建到销毁的全过程 也就是 newVue 开始就是 vue 生命周期的开始 Vue 实例有 个完整的 命周期 也就是从开始创建 初始化数据 编译模版 挂载 Dom gt 渲染 更新 gt 渲染 卸载等 系列过程 称这是 Vue 的 命周期 钩子函数是 Vue 生命周期中每个阶段对外开放让程序员操作 Vue 的接口 Vue 有 8 个钩子函数 分别为 beforeCreate 创建前

    2026年3月26日
    2
  • 点集拓扑_拓扑学期末考试试题及答案

    点集拓扑_拓扑学期末考试试题及答案[TOC]拓扑总结拓扑空间一个集合X上一个拓扑是X的子集的一个族$\Im$它满足以下条件:$(i)\varnothing$和$X$都要在$\Im$中$(ii)\Im$的任意子族的元素的并

    2022年8月5日
    11
  • 相机标定(Camera calibration)

    相机标定(Camera calibration)简介摄像机标定(Cameracalibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵PP的过程,下面相关的部分主要参考UIUC的计算机视觉的课件(网址Spring2016CS543/ECE549 Computervision)。基本的坐标系:世界坐标系(worldcoordinatesystem);相机坐标系(cameracoordina

    2022年5月28日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号