请求报文的方法及get与post的区别
请求报文的方法及get与post的区别
请求的起始以方法作为开始,方法用来告诉服务器要如何做。
在开发中通常有两种请求方式。
- get方式: 是以实体的方式得到由请求 URI 所指定资源的信息,如果请求 URI 只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。
- post方式: 用来想目的服务器发出请求,要求它接收被附在请求后的实体,并把它当作请求队列中请求 URI 所指定资源的附加新子项,所以 post 请求可能会导致新的资源的建立和 / 或已有资源的修改。
除了以上两种常用的请求方式,还有另外五种请求方法。说明如下。
(1) HEAD: 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
(2)DELETE: 请求服务器删除指定的页面。
(3)CONNECT: HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
(4)OPTIONS: 允许客户端查看服务器的性能。
(5)TRACE: 回显服务器收到的请求,主要用于测试或调试。
get与post的区别
图片摘取于百度

接下来,根据百度的答案逐一分析。
(1) get是从服务器上获取数据,post是向服务器传送数据。
看一下HTTP RFC 文档对这两种请求的定义。
根据HTTP规范,get用于信息获取,而且应该是安全的和幂等的。
post表示可能会修改服务器上资源的请求。
通俗的来讲,我们可以从两个角度看待get请求。
从发送请求的角度,get请求相当于我们在数据库中做了查询的操作,这样的操作不影响数据库本身的数据。
从接收返回数据的角度,幂等的含义简单地说就是发送get请求不改变返回数据的内容。
例如,你发送get请求获取测试论坛的首页信息。首页信息并不会因为你发了请求而改变。因为get用于不改变返回信息内容的请求,所以HTTP规范定义它是安全的,就像对数据库不做增删改操作,只查询数据一样。
而post的用途呢,表示会改变服务器上所返回资源信息的请求,相当于我们在数据库中做了修改的操作,会影响数据库本身的数据。
例如,你在测试论坛网上发了帖子,做了评论,得到了积分等。这种情况下,资源状态被改变了,所以HTTP规范定了post请求是可能会改变服务器资源的请求。
通过HTTP规范的定义,可以看出get和post都是用作传递及获取服务器信息的请求。get请求也可以向服务器传递数据,post请求也需要服务器返回数据。
(2)get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
这个答案是在叙述get和post表现形式的不同
get请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以 ? 分割URL和传输数据,多个参数用 & 连接。post请求就是把提交的数据放置在HTTP包的 body 中。
这种形式是HTML标准对HTTP协议用法的约定,并不能作为post和get请求的区别。现在也有很多Web Server支持get中包含body的表现形式。
(3)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
这个答案有点不知所云,获取请求变量的值是由服务器端的配置所决定的。这些与post和get请求的区别完全没有关系。
(4)get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
在HTTP协议规范中,没有对传输的数据大小进行限制,也没有对URL长度进行限制。
如果说对于用get请求URL上有限制的话,取决于以下两方面。
1.HTTP客户端浏览器自己的限制: 如IE限定URL长度为2083字节,opera是4050,Netscape是8192等。
2.Web服务器为了效率及安全的考虑,,所以修改Apache、IIS的配置对post提交数据大小进行的限制。
限制并不能作为post和get请求的区别,所以这个答案继续是错的。
(5)get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
我们猜测一下这个答案的坐着为何这样说,应该是由于post请求在URL上看不到传输数据吧。
但是在浏览器地址栏上看不到并不能说明它安全,如果你使用截数据包的工具查看没有加密过的post请求,同样可以清晰地看到post报文的内容。
所以说安全不安全根本不是get和post的区别,只和两者是否加密有关。
GET 和 POST 本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
请求报文的方法及get与post的区别的更多相关文章
- WCF和WebService中获取当前请求报文的方法
WCF中: 1. 在hosting WCF的web.config中加入: <system.serviceModel> <serviceHostingEnvironment aspNe ...
- TIdHTTP get参数带中文解决方法--请求报文
Post 看起来稍微复杂先,暂不讨论.post 目前按照一般方法有中文名也可以. 拼接时:pointname=九记餐厅&begintime=2017-03-01 00:00:00& 有 ...
- Python编程系列---获取请求报文行中的URL的几种方法总结
在浏览器访问web服务器的时候,服务器收到的是一个请求报文,大概GET请求的格式大概如下: 先随便拿到一个请求报文,蓝色即为我们要获取的 GET /index.html HTTP/1.1 Hos ...
- Axis通过方法获取webService请求报文
MessageContext messageContext = _call.getMessageContext(); Message reqMsg = messageContext.getReques ...
- HTTP请求报文支持的各种方法
常见的HTTP方法如下: 1.GET GET是最常用的方法.通常用于请求服务器发送某个资源. 2.HEAD HEAD与GET的行为类似,但服务器在响应中只返回首部,不会返回实体的部分.这就允许客户端在 ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- [httpserver]如何解析HTTP请求报文
这个http server的实现源代码我放在了我的github上,有兴趣的话可以点击查看哦. 在上一篇文章中,讲述了如何编写一个最简单的server,但该程序只是接受到请求之后马上返回响应,实在不能更 ...
- HTTP请求报文格式
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. 请求报文 一个HTTP请求报文由请求行(request line ...
- HTTP 请求报文 响应报文
引言 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发 ...
随机推荐
- FZEasyFile的使用
FZEasyFile的使用 https://github.com/jiecao-fm/FZEasyFile 操作沙盒文件很恶心,但用上FZEasyFile就变得简单了. 以前你需要这么做才行: NSF ...
- Linux下SVN安装配置及应用
一.安装篇 centos下yum安装 yum install subversion 查看安装是否成功: svnserve --version 二.配置篇 创建svn版本库目录 mkdir /home/ ...
- selenium层级定位及鼠标键盘操作
#code:utf-8 from selenium import webdriver from selenium.webdriver.common.action_chains import Actio ...
- PTA练习题之6.1统计字符串中大小写字母的个数(10 分)
统计字符串中大小写字母的个数(10 分) 分别统计字符串中大写字母和小写字母的个数. 函数接口定义: void fun ( char *s, int *a, int *b ); 其中s.a.b 都是用 ...
- 针对ie的css hack
/* IE9 , IE10 ,IE11 */ @media screen and (min-width:0\0) { /* IE9 , IE10 ,IE11 rule sets go here * ...
- 请求是如何传递给StandardEngine的?
将请求的传递过程分解学习. CoyoteAdapter将中持有Connector的引用,所以在Coyote这个类中Connector查找它所属的StandardService,而StandardSer ...
- 模式:模版、样式;属于分类、识别的范围;分类、归类的标准-How are patterns obtained?
模式及套路 模式:模版.样式:属于分类.识别的范围. How are patterns obtained? Through : re-use, classification and finally a ...
- poj 3253 Fence Repair (STL优先队列)
版权声明:本文为博主原创文章,未经博主同意不得转载. vasttian https://blog.csdn.net/u012860063/article/details/34805369 转载请注明出 ...
- BZOJ2756:[SCOI2012]奇怪的游戏(最大流,二分)
Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 B ...
- tp3.2中前台模板中日期时间的转换
{$vo.create_time|date='Y-m-d',###} 其中###是占位符