请求报文的方法及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最初的目的是为了提供一种发 ...
随机推荐
- MVC中重定向几种方法
//1.Response.Redirect using System; using System.Collections.Generic; using System.Linq; using Syste ...
- git常用命令#自用#
===== 未完结,慢慢补充 ===== 零.克隆 1.克隆主分支 : git clone ${remotePath} 2.克隆指定分支 : git clone -b <branch na ...
- 设计模式:代理(Proxy)模式
设计模式:代理(Proxy)模式 一.前言 代理模式或许我们都听说过,至少知道代理(Proxy)这个东西的,否则看这篇博客也没任何意义的.什么叫做代理,代理是代替服务器去接受请求者的请求的中间人 ...
- Hyperledger Fabric 1.0 学习搭建 (四)--- 创建Fabric多节点集群
4.1.配置说明 首先可以根据官方Fabric自带的e2e_cli列子中的集群方案来生成我们自己的集群,与案例不同的是我们需要把容器都分配到不同的服务器上,彼此之间通过网络来进行通信,网络构建完成后则 ...
- java时间操作工具类
import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.te ...
- 美国加拿大著名公共知识分子简·雅各布斯 (Jane Jacobs)的5本书
作者是美国.加拿大著名公共知识分子.最近看了她的三本书<城市经济><城市与国家财富><经济的本质>.出版社把这三本书归入“城市-经济”三部曲,三本书英文原版的出版日 ...
- Dom4j的一个小例子,用于解析xml文件的元素获取方式
import java.io.File; import java.io.IOException; import javax.xml.parsers.ParserConfigurationExcepti ...
- 事件总线(Event Bus)
事件总线(Event Bus)知多少 源码路径:Github-EventBus简书同步链接 1. 引言 事件总线这个概念对你来说可能很陌生,但提到观察者(发布-订阅)模式,你也许就很熟悉.事件总线是对 ...
- 六.安装jdk(基于Centos7安装)
1.我把java安装到/usr/local/jdk目录下面,所以,新建文件夹如下 2.把下载到的文件上传至Linux服务器 笔者使用wget命令直接把文件下载到服务器"wget http:/ ...
- how to design Programs 学习笔记
how to design Programs 学习笔记 */--> how to design Programs 学习笔记 目录 1. 前言 1.1. 系统化程序设计 1.2. 输入和输出 2. ...