HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等
post和get的区别
HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和 幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解);
所有的人都知道如下区别:
1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。
2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.
3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。
GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
HTTP请求:GET与POST方法的区别
HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和 幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解);
HTTP协议及其POST与GET操作差异
引言HTTP协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来。
但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差异?GET或POST传送数据量的大小有限制吗?HTTP响应的状态有哪些?以及在C#中你如何使用?如果你不能清楚地回答其中的大部分问题,那么这篇文章就是为你准备的!大纲如下:∙1、HTTP概述o 1.1、HTTP协议的客户端与服务器的交互o 1.2、HTTP消息o 1.3、HTTP请求的方法o 1.4、HTTP响应的代码∙2、抓包分析∙3、POST与GET的差异∙4、以一个实例说明C#中如何使用POST、GET等操作o 4.1、HttpWebRequesto 4.2、HttpWebResponseo 4.3、编写WinForm程序打开博客园首页(附源码)1、HTTP概述为了唤醒你对HTTP协议的记忆或使你能够对HTTP协议有所了解,首先简单一下HTTP协议。
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
所有的WWW文件都必须遵守这个标准。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
HTTP的发展是万维网协会(World Wide Web Consortium)和Internet 工作小组(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,其中最著名的就是RFC 2616。
RFC 2616定义了HTTP协议中一个现今被广泛使用的版本——HTTP 1.1。
1.1、HTTP协议的客户端与服务器的交互HTTP是一个客户端和服务器端请求和应答的标准(TCP)。
客户端是终端用户,服务器端是网站。
通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。
(我们称这个客户端)调用户代理(user agent)。
POST和GET的区别
POST和GET的区别POST和GET的区别?POST和GET是什么? POST和GET是HTTP请求的两种⽅式,都可实现将数据从浏览器向服务器发送带参数的请求。
HTTP请求底层协议都是TCP/IP,所以两者没有本质的区别。
HTTPHTTP是什么HTTP:超⽂本传输协议。
所有的WWW⽂件都必须遵守这个标准。
HTTP向服务器发送请求是TCP连接。
HTTP服务器收到请求后向客户端返回⼀个状态⾏⽐如“HTTP/1.1 200 OK”和HTTP请求的组成HTTP由四部分组成:请求⾏(request line):⽤于说明请求类型、要访问的资源路径、HTTP版本号(GET /index.html HTTP/1.1)请求头部(header):⽤于说明服务器要使⽤的附加信息⼀个空⾏请求数据(body):任意添加的数据eg:GET /books/?sex=man&name=Professional HTTP/1.1Host: User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1Connection: Keep-Alive这⾥是空⾏------------------------------------------------------------------------------POST /index.html HTTP/1.1 请求⽅法 url 协议/版本号Host: localhost 主机地址User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 发送请求的应⽤程序名称Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,zh;q=0.5 通知服务端可以发送的语⾔Accept-Encoding: gzip, deflate 通知服务端可以发送的数据压缩格式Connection: keep-aliveReferer: <a target=_blank href="http://localhost/" style="color: rgb(51, 102, 153); text-decoration: none;">http://localhost/</a>Content-Length:25Content-Type:application/x-www-form-urlencoded请求空⾏标志着请求头结束,请求正⽂(请求体)的开始username=aa&password=1234GET⽅法 GET是获取的意思,顾名思义就是获取信息。
get和post参数传递方式
get和post参数传递方式“GET和POST参数传递方式”是指通过HTTP协议传递参数的两种常用方式。
在网络开发中,我们经常需要将参数传递给服务器端处理,以便进行相应的操作。
本文将以GET和POST参数传递方式为主题,详细介绍这两种方法的使用场景、优缺点以及具体实现步骤等内容,希望能帮助读者更好地理解和运用这两种传参方式。
一、GET和POST参数传递方式的概念及区别GET和POST是HTTP协议中的两种常用HTTP请求方法,用于从客户端向服务器发送请求。
它们的主要区别在于参数的传递方式以及适用场景。
1. GET方式:通过URL的查询字符串传递参数,参数会附加在URL后面,形如“2. POST方式:通过请求体传递参数,参数不会出现在URL中,而是通过请求头的Content-Type字段指定参数的格式(如application/x-www-form-urlencoded或multipart/form-data)。
POST请求适合传递大量参数以及需要保密性的数据,如表单数据、文件上传等。
二、GET参数传递方式的实现步骤及示例GET参数传递方式相对简单,一般适用于只传递少量参数的场景。
其实现步骤如下:1. 构造URL:需要将参数以键值对的形式添加到URL的查询字符串中。
例如,我们要传递name和age两个参数,可以构造URL:“2. 发送请求:客户端向服务器发送GET请求,将参数附加在URL后面。
服务器端通过解析URL中的查询字符串,获取参数并进行相应的处理。
3. 接收参数:服务器端解析URL,获取参数的值。
具体的实现方式根据使用的编程语言和框架而有所不同。
下面以Python和Flask框架为例,演示GET参数传递方式的实现:pythonfrom flask import Flask, requestapp = Flask(__name__)@app.route('/page', methods=['GET'])def handle_page():name = request.args.get('name')age = request.args.get('age')# 在这里对接收到的参数进行相应的处理return f"Hello, {name}! You are {age} years old."if __name__ == '__main__':app.run()在上述示例中,我们使用Flask框架搭建了一个简单的Web应用。
HTTP请求方式中get和post的区别
HTTP请求⽅式中get和post的区别表单提交中get和post⽅式的区别有5点1.get是从服务器上获取数据,post是向服务器传送数据。
2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段⼀⼀对应,在URL中可以看到。
post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内⼀起传送到ACTION属性所指的URL地址。
⽤户看不到这个过程。
3.对于get⽅式,服务器端⽤Request.QueryString获取变量的值,对于post⽅式,服务器端⽤Request.Form获取提交的数据。
4.get传送的数据量较⼩,不能⼤于2KB。
post传送的数据量较⼤,⼀般被默认为不受限制。
但理论上,IIS4中最⼤量为80KB,IIS5中为100KB。
(这⾥有看到其他⽂章介绍get和post的传送数据⼤⼩跟各个浏览器、操作系统以及服务器的限制有关)5.get安全性⾮常低,post安全性较⾼。
表单提交中get和post⽅式的区别有5点1.get是从服务器上获取数据,post是向服务器传送数据。
2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段⼀⼀对应,在URL中可以看到。
post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内⼀起传送到ACTION属性所指的URL地址。
⽤户看不到这个过程。
3.对于get⽅式,服务器端⽤Request.QueryString获取变量的值,对于post⽅式,服务器端⽤Request.Form获取提交的数据。
4.get传送的数据量较⼩,不能⼤于2KB。
post传送的数据量较⼤,⼀般被默认为不受限制。
但理论上,IIS4中最⼤量为80KB,IIS5中为100KB。
5.get安全性⾮常低,post安全性较⾼。
HTTP请求:get与post⽅法的区别HTTP 定义了与服务器交互的不同⽅法,最基本的⽅法是 get 和 post。
GET请求和POST请求详解
HTTP请求的两种方式,GET和POST请求的表面形式上的区别:1.GET请求通过URL(请求行)提交数据,在URL中可以看到所传参数。
POST通过“请求体”传递数据,参数不会在url中显示。
2.GET请求提交的数据有长度限制,POST请求没有限制。
3.GET请求返回的内容可以被浏览器缓存起来。
而每次提交的POST,浏览器在你按下F5的时候会跳出确认框,浏览器不会缓存POST请求返回的内容。
以上描述都是GET,POST两者区别表现形式,是浏览器对这两种请求的处理方式。
作为Web开发人员,更应该看清的是它们的本质区别是什么HTTP协议是这样解释GET和POST的:GET请求不应该做读取数据之外的事情(原文:Requests using GET SHOULD NOT have the significance of taking an action other than retrieval)。
而如果一个请求,修改了服务器资源或者使用了服务器资源(如发邮件,使用打印机等),那么应当使用POST。
所以,GET和POST的本质区别是使用场景的区别,简单的说,GET是只读,POST是写。
浏览器对两种请求的不同处理方式也是基于这两个不同的场景:1.GET:查询往往需要的上传的数据量比较小,查询参数也往往不需要保密,所以放在url里比较高效。
HTTP协议要求同一URL的多个请求应该返回同样的结果,所以浏览器可以把返回结果缓存起来,以提高性能。
至于参数长度的限制,这个是和浏览器url的长度限制相关的,1024也好,2048也好,其实没有太大的意义,参数超长往往是错误使用GET方法的结果。
2.POST:修改数据需要支持大数据量表单的提交,数据也常常包含用户的私人信息,所以数据放在请求的消息体中传递。
相同的POST请求可能会对服务器端产生不同的影响,比如两次POST可能创建两条不同的数据,所以对POST返回结果的缓存是没有意义的。
HTTP请求(GET与POST区别)和响应(get是从服务器上获取数据,post是向服务器。。。
HTTP请求(GET与POST区别)和响应(get是从服务器上获取数据,post是向服务器。
HTTP有两部分组成:请求与响应,下⾯分别整理。
⼀.HTTP请求1.HTTP请求格式:<request line><headers><blank line>[<request-body>]在HTTP请求中,第⼀⾏必须是⼀个请求⾏(request line),⽤来说明请求类型、要访问的资源以及使⽤的HTTP版本。
紧接着是⼀个⾸部(header)⼩节,⽤来说明服务器要使⽤的附加信息。
在⾸部之后是⼀个空⾏,再此之后可以添加任意的其他数据[称之为主体(body)]。
2.GET与POST区别HTTP 定义了与服务器交互的不同⽅法,最基本的⽅法是 GET 和 POST(Ajax开发,关⼼的只有GET请求和POST请求)。
GET与POST⽅法有以下区别:(1)在客户端,Get⽅式在通过URL提交数据,数据在URL中可以看到;POST⽅式,数据放置在HTML HEADER内提交。
(2) GET⽅式提交的数据最多只能有1024字节,⽽POST则没有此限制。
(3)安全性问题。
正如在(1)中提到,使⽤ Get 的时候,参数会显⽰在地址栏上,⽽ Post 不会。
所以,如果这些数据是中⽂数据⽽且是⾮敏感数据,那么使⽤ get;如果⽤户输⼊的数据不是中⽂字符⽽且包含敏感数据,那么还是使⽤ post为好。
(4)安全的和幂等的。
所谓安全的意味着该操作⽤于获取信息⽽⾮修改信息。
幂等的意味着对同⼀ URL 的多个请求应该返回同样的结果。
完整的定义并不像看起来那样严格。
换句话说,GET 请求⼀般不应产⽣副作⽤。
从根本上讲,其⽬标是当⽤户打开⼀个链接时,她可以确信从⾃⾝的⾓度来看没有改变资源。
⽐如,新闻站点的头版不断更新。
虽然第⼆次请求会返回不同的⼀批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。
get与post的区别与选择
Get与Post的区别与选择1 get与post的区别1.1提交目的不同Get是用来从服务器上获得数据Post是用来向服务器上传递数据。
1.2提交表单的形式不一样Get将表单中数据的按照variable=value的形式,添加到action所指向的URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
1.3安全性Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。
另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。
Post的所有操作对用户来说都是不可见的。
1.4传输量Get传输的数据量小,这主要是因为受URL长度限制;Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
1.5 传输数据集Get限制Form表单的数据集的值必须为ASCII字符。
Post支持整个ISO10646字符集。
默认是用ISO-8859-1编码1.6 Get是Form的默认方法。
2 get与post的选择2.1用GET方法的情况请求是为了查找资源,HTML表单数据仅用来帮助搜索。
请求结果无持续性的副作用。
收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符。
2.2 用post方法的情况请求的结果有持续性的副作用,例如,数据库内添加新的数据行。
若使用GET方法,则表单上收集的数据可能让URL过长。
要传送的数据不是采用7位的ASCII编码。
Get和Post区别-给你标准答案
Get、post的区别——给你标准答案首先,get和post都是HTTP协议的请求方法,本质上没有区别。
HTTP的底层是TCP/IP,所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接,GET和POST能做的事情是一样一样的,你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。
但为什么我们还要区分get、post呢?在我大万维网世界中,TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。
但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。
为了避免这种情况发生,交通规则HTTP诞生了。
HTTP给汽车运输设定了好几个服务类别,有GET, POST, PUT, DELETE等等,HTTP规定,当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(url中)以方便记录。
如果是POST请求,就要在车上贴上POST的标签,并把货物放在车厢里。
当然,你也可以在GET 的时候往车厢内偷偷藏点货物,但是这是很不光彩;也可以在POST的时候在车顶上也放一些数据,让人觉得傻乎乎的。
HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。
但是,我们只看到HTTP对GET和POST参数的传送渠道(url还是requrest body)提出了要求。
“标准答案”里关于参数大小的限制又是从哪来的呢?在我大万维网世界中,还有另一个重要的角色:运输公司。
不同的浏览器(发起http请求)和服务器(接受http请求)就是不同的运输公司。
虽然理论上,你可以在车顶上无限的堆货物(url中无限加参数)。
但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。
post与get的区别
post与get的区别如果有人问你,GET和POST,有什么区别?你会如何回答?最普遍的答案1. GET使用URL或Cookie传参。
而POST将数据放在BODY中。
2. GET的URL会有长度上的限制,则POST的数据则可以非常大。
3. POST比GET安全,因为数据在地址栏上不可见。
但是很不幸,这些区别全是错误的,更不幸的是,这个答案还是Google搜索的头版头条,然而我根本没想着这些是答案,因为在我看来他们都是错的。
我来一一解释一下。
GET和POST与数据如何传递没有关系GET和POST是由HTTP协议定义的。
在HTTP协议中,Method和Data(URL, Body, Header)是正交的两个概念,也就是说,使用哪个Method与应用层的数据如何传输是没有相互关系的。
HTTP没有要求,如果Method是POST数据就要放在BODY中。
也没有要求,如果Method是GET,数据(参数)就一定要放在URL中而不能放在BODY中。
那么,网上流传甚广的这个说法是从何而来的呢?我在HTML标准中,找到了相似的描述。
这和网上流传的说法一致。
但是这只是HTML标准对HTTP协议的用法的约定。
怎么能当成GET和POST的区别呢?而且,现代的Web Server都是支持GET中包含BODY这样的请求。
虽然这种请求不可能从浏览器发出,但是现在的Web Server又不是只给浏览器用,已经完全地超出了HTML服务器的范畴了。
知道这个有什么用?我不想解释了,有时候就得自己痛一次才记得住。
HTTP协议对GET和POST都没有对长度的限制HTTP协议明确地指出了,HTTP头和Body都没有长度的要求。
而对于URL长度上的限制,有两方面的原因造成:1. 浏览器。
据说早期的浏览器会对URL长度做限制。
据说IE对URL长度会限制在2048个字符内(流传很广,而且无数同事都表示认同)。
但我自己试了一下,我构造了90K的URL通过IE9访问,是正常的。
Post和Get的区别(兼谈页面间传值的方式)
Post和Get的区别(兼谈页面间传值的方式)从一个页面转向另一个页面的请求方式有两种,Post和Get.如果从原理上来探究他们的区别,涉及到Http传输协议的细节,本文不加探究,只讨论一下表象。
所有的人都知道如下区别:1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。
2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get 之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。
我们的form表单的method方法,有两个,post,get.它在页面传值的时候的区别也就是上面提到的三点.先来看一下post方法.这个方法在asp时代应该跟程序员打交道很多的,因为那时候没有现在的V iewState,每个页面要恢复原来的状态,都要将页面Post给自身,然后挨个取值,重新赋值.现在这些琐碎的事情都让ViewState代劳了.所以将页面post给自身的动作,在某种程度上已经被的程序员们忘却了,所以Post也就被大部分的忽视了,这就是技术进步的双刃剑,带来方便的同时,蒙上你的眼睛。
ViewState必须包含在<form runat="server">的窗体下,而只要包含了"runat="server""的标志,就甭想Post到其他页面中去,为什么?老盖说,我的V iewState是保存当前页面状态的,你要转到其他页面,他说,不行,**不认识的参数.如果想Post一个窗体,咋办?有四种方式可供选择.1.在页面上新建一个form,不要加上runat="server"的标志,当然在这个窗体下的控件也就不用想用Viewstate来传值了.当在其他有runat="server"的窗体的中的按钮事件中,手动调用新建form的submit() 函数.传送页面代码如下:<!--html代码--><form id="Form1" method="post" runat="server"><input id="btnTransfer" type="button" onclick="post();" runat="server"><input type="text" runat="server" id="SourceData"></form><form id="forPost" method="post"><input type="text" runat="server" id="SourceData2"></form><!--Script代码--><script language="javascript">function post(){forPost.action="DestinationPage.aspx";forPost.submit();}</script>接收页面string a=Request.Form["SourceData2"].ToString();2.通过Session取值,在一个页面中赋值,在其他页面中共享,这个方式也被广泛应用,个人不倾向于用这种方式,我怕造成Session值的混乱无序,Session用来存一些公共的东西已经累得够呛了。
C#的HTTP协议中POST与GET的区别
C#的HTTP协议中POST与GET的区别引言HTTP协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来。
但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差异?GET或POST传送数据量的大小有限制吗?HTTP响应的状态有哪些?以及在C#中你如何使用?如果你不能清楚地回答其中的大部分问题,那么这篇文章就是为你准备的!大纲如下:∙1、HTTP概述o 1.1、HTTP协议的客户端与服务器的交互o 1.2、HTTP消息o 1.3、HTTP请求的方法o 1.4、HTTP响应的代码∙2、抓包分析∙3、POST与GET的差异∙4、以一个实例说明C#中如何使用POST、GET等操作o 4.1、HttpWebRequesto 4.2、HttpWebResponseo 4.3、编写WinForm程序打开博客园首页(附源码)1、HTTP概述为了唤醒你对HTTP协议的记忆或使你能够对HTTP协议有所了解,首先简单一下HTTP协议。
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
所有的WWW文件都必须遵守这个标准。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
HTTP的发展是万维网协会(World Wide Web Consortium)和Internet工作小组(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,其中最著名的就是RFC 2616。
RFC 2616定义了HTTP协议中一个现今被广泛使用的版本——HTTP 1.1。
1.1、HTTP协议的客户端与服务器的交互HTTP是一个客户端和服务器端请求和应答的标准(TCP)。
客户端是终端用户,服务器端是网站。
通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP 请求。
getpost方法
getpost方法GET和POST是HTTP协议中最常见的两种请求方法。
它们都是用来向服务器传送数据。
本文将从以下一些方面阐释什么是Get/Post方法,两者有何区别。
1. Get/Post方法的含义Get和Post都是用来传递数据给服务器,以便服务器做出相应的处理。
Get是在URL中传输数据,数据可以被缓存,存入浏览器历史记录中,Post则是将数据放在HTTP请求主体中传输,数据不会被缓存,也不会存入浏览器历史记录中。
2. Get/Post方法的区别(1)长度限制:Get方法中传输的数据长度有限制,通常不超过2KB。
因此,它不适合传输大量数据。
而Post方法传输的数据没有长度限制。
(2)安全性:Get方法中传输的数据以明文方式传输,在URL中可以看到。
因此,它的安全性较低。
而Post方法中传输的数据以二进制方式传输,不以明文显示在URL中,安全性相对较高。
(3)请求方式:Get方法是一种“无副作用”请求方式,它不会改变服务器的状态,只是获取并显示数据。
Post方法则是一种“有副作用”的请求方式,它会改变服务器的状态,例如在数据库中添加数据。
(4)缓存处理:Get方法可以被缓存,因为它的请求结果是相同的。
所以,使用Get方法会使网页加载速度更快。
Post方法不会被缓存,因为它的请求结果会根据请求参数的不同而改变。
3. 使用建议当需要从服务器获取数据时,使用Get方法;当需要向服务器提交数据时,使用Post方法。
如果需要传输大量数据或保证传输的过程安全,则需要使用Post方法。
Get方法适用于页面跳转,如单纯的浏览网页;而Post方法适用于涉及数据变更、快递或登录等需要保证安全性的交互过程。
Get方法数据传输速度快,但安全性不如Post方法,所以应该避免将敏感数据传输给服务器。
4. 总结Get方法和Post方法都是HTTP协议中最常用的请求方式。
它们之间的不同主要体现在请求的方式、传输数据的大小、安全性以及缓存处理上。
HTTP方法GET对比POST
HTTP方法GET对比POST两种最常用的HTTP方法是:GET和POST。
什么是HTTP?超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。
HTTP的工作方式是客户机与服务器之间的请求-应答协议。
web浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。
举例:客户端(浏览器)向服务器提交HTTP请求;服务器向客户端返回响应。
响应包含关于请求的状态信息以及可能被请求的内容。
两种HTTP请求方法:GET和POST在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET和POST。
GET-从指定的资源请求数据。
POST-向指定的资源提交要被处理的数据GET方法请注意,查询字符串(名称/值对)是在GET请求的URL中发送的:/tet/demo_form.apname1=value1&name2=value2有关GET请求的其他一些注释:GET请求可被缓存GET请求不应在处理敏感数据时使用GET请求有长度限制GET请求只应当用于取回数据POST方法name1=value1&name2=value2有关POST请求的其他一些注释:POST请求不会被缓存POST请求对数据长度没有要求比较GET与POST其他HTTP请求方法下面的表格列出了其他一些HTTP请求方法:方法HEADPUTDELETEOPTIONSCONNECT上传指定的URI表示。
删除指定资源。
返回服务器支持的HTTP方法。
把请求连接转换到透明的TCP/IP通道。
描述与GET相同,但只返回HTTP报头,不返回文档主体。
总结httpget和post的区别
序号⽅法描述1GET 请求指定的页⾯信息,并返回实体主体。
2HEAD 类似于get 请求,只不过返回的响应中没有具体的内容,⽤于获取报头3POST 向指定资源提交数据进⾏处理请求(例如提交表单或者上传⽂件)。
数据被包含在请求体中。
POST 请求可能会导致新的资源的建⽴和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的⽂档的内容。
5DELETE 请求服务器删除指定的页⾯。
6CONNECT HTTP/1.1协议中预留给能够将连接改为管道⽅式的代理服务器。
7OPTIONS 允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要⽤于测试或诊断。
总结httpget 和post 的区别这个问题⼏乎⾯试的时候都会问到,是⼀个⽼⽣常谈的话题,然⽽随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学⽽时习之,不亦说乎。
什么是http ?get 、post 常见的区别get 和post 不同点的误区附录常见的http 状态码1.什么是http这⾥只是简单概述⼀下,更多详情可以参见:基于tcp/ip 、⼀种⽹络应⽤层协议、超⽂本传输协议HyperText Transfer Protocol ⼯作⽅式:客户端请求服务端应答的模式快速:⽆状态连接,灵活:可以传输任意对象,对象类型由Content-Type 标记客户端请求request 消息包括以下格式:请求⾏(request line )、请求头部(header )、空⾏、请求数据,如下图 服务端响应response 也由四个部分组成,分别是:状态⾏、消息报头、空⾏、响应正⽂请求⽅法,http 请求可以使⽤多种请求⽅法。
HTTP1.0定义了三种请求⽅法: GET, POST 和 HEAD ⽅法。
HTTP1.1新增了五种请求⽅法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT ⽅法。
2.get 和post 常见的区别http 协议最常见的两种⽅法GET 和POST 请求缓存:GET 会被缓存,⽽post 不会收藏书签:GET 可以,⽽POST 不能保留浏览器历史记录:GET 可以,⽽POST 不能⽤处:get 常⽤于取回数据,post ⽤于提交数据安全性:post ⽐get 安全请求参数:querystring 是url 的⼀部分get 、post 都可以带上。
get请求和post请求的用法
get请求和post请求的用法
GET请求和POST请求都是HTTP协议的请求方式,用于向服务器请求数据。
它们的区别在于:
1. GET请求通过URL传递请求参数,而POST请求通过请求体传递请求参数。
2. GET请求的请求参数会显示在URL中,而POST请求的请求参数不会显示在URL中。
3. GET请求适合用于请求数据,而POST请求适合用于提交数据。
4. GET请求的请求参数长度有限制,一般为2048个字符,而POST请求的请求参数长度没有限制。
GET请求的用法:
1. 用于请求资源
2. 请求参数通过URL传递,可以通过URL参数直接获取参数
3. 没有上传文件等二进制数据的需求
4. 不需要向服务器发送敏感数据
POST请求的用法:
1. 用于向服务器提交数据
2. 请求参数通过请求体传递,需要通过请求体解析参数
3. 可以上传二进制数据,如文件、图片等
4. 需要向服务器发送敏感数据,如用户名密码等
综上所述,GET请求和POST请求的用法需要根据实际情况进行选择。
一般来说,GET请求适合用于请求数据,而POST请求适合用于提交数据。
同时,需要注意请求参数的传递方式及数据安全性。
http中get与post的区别
http定义了与服务器交互的不同方法,最基本的方法有4种,分别是get,post,put,delete。
url全称是资源描述符,我们可以这样认为:一个url地址,它用于描述一个网络上的资源,而http中的get,post,put,delete就对应着对这个资源的查,改,增,删4个操作。
到这里,大家应该有个大概的了解了,get一般用于获取/查询资源信息,而post一般用于更新资源信息。
1 .根据http规范,get用于信息获取,而且应该是安全的和幂等的。
(1).所谓安全的意味着该操作用于获取信息而非修改信息。
换句话说,get 请求一般不应产生副作用。
就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
* 注意:这里安全的含义仅仅是指是非修改信息。
(2).幂等的意味着对同一url的多个请求应该返回同样的结果。
这里我再解释一下幂等这个概念:幂等(idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。
幂等有一下几种定义:对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。
比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs(a))。
对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即max(x,x) = x。
看完上述解释后,应该可以理解get幂等的含义了。
但在实际应用中,以上2条规定并没有这么严格。
引用别人文章的例子:比如,新闻站点的头版不断更新。
虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。
从根本上说,如果目标是当用户打开一个链接时,他可以确信从自身的角度来看没有改变资源即可。
GET和POST的区别
GET和POST的区别
1.GET和POST是HTTP协议请求的两种⽅式
2.GET主要是⽤来获取数据 ,POST是⽤来提交数据的
3.GET带参数请求是将参数缀到URL之后,在地址栏⾥输⼊⽹址访问⽹站就是GET请求
POST带参数请求是将参数放到请求体中,HTML中可以使⽤form表单发送POST请求
4.POST请求相对于GET请求安全些,因为GET在浏览器中带参数会暴露在地址栏
5.GET请求⼤⼩有限制⼀般为2K,⽽POST请求没有⼤⼩限制
深⼊答案
1.GET和POST是HTTP请求的两种⽅式两种请求的本质都是TCP(transmission control protocol --传输控制协议)链接
2.HTTP请求包括三部分请求头,请求体,请求⾏
请求⾏⼜包括三个部分⽅法,路径,协议 GET类型报⽂请求⽅法的位置为GET POST类型报⽂请求的⽅法为POST 3.GET请求会产⽣⼀次TCP数据包,浏览器会把http,header,data⼀并发送出去
POST请求会产⽣两次TCP数据包浏览器先发送请求头,服务器响应100 continue, 浏览器再发送请求体。
get和post的实际用法
get和post的实际用法GET和POST是HTTP协议中两种常用的请求方法,它们在Web开发中起着重要的作用。
下面将详细介绍GET和POST的实际用法。
GET方法:1. 数据获取:GET方法用于向服务器请求获取指定资源。
比如,浏览器通过GET请求来获取网页的HTML、CSS,JavaScript等文件。
2. 查询参数传递:GET请求将查询参数直接附加在URL上,以key-value的形式传递给服务器。
这些参数可以用来过滤、排序或限制返回结果。
3.书签:由于GET请求的URL是对资源的唯一标识,可以将含有特定查询参数的URL添加到书签中,方便下次访问。
POST方法:1.数据提交:POST方法用于向服务器提交数据,通常用于表单提交等场景。
POST请求将参数放在请求体中,而不是直接添加在URL上,确保数据的安全性和隐私性。
2.大数据传输:POST请求没有URL长度限制,适合传输大量数据。
3.请求体格式灵活:POST请求的请求体可以采用多种格式,如JSON、XML等,适合传输结构化数据。
GET和POST方法的比较:1.安全性:GET请求的参数在URL中可见,相对不安全;POST请求的参数在请求体中,相对安全。
2.数据长度:GET请求对参数和URL长度有限制,通常不能超过几千个字符;POST请求没有长度限制。
3.缓存:GET请求会被缓存,重复请求时返回缓存中的数据;POST请求不会被缓存。
4.幂等性:GET请求是幂等的,多次请求返回的结果应该相同;POST请求非幂等,多次请求会在服务端执行多次。
实际应用场景:1.GET方法适用于需要从服务器获取数据的场景,如网页浏览、点击链接、查询等。
2.POST方法适用于向服务器提交数据的场景,如用户注册、登录、提交表单、上传文件等。
总结:GET和POST方法在Web开发中有着不同的实际用途。
GET方法用于获取资源、传递查询参数和书签,POST方法用于提交数据和传输大量数据。
HTTP协议中GET和POST的区别(详细描述)
HTTP协议中GET和POST的区别(详细描述)HTTP协议在现代⽹络通信中被⼴泛应⽤,在HTTP 1.0版本中有7种请求⽅式,在HTTP 1.1版本中有8种请求⽅式,⽽这些请求⽅式中最常⽤的就是GET和POST,⽹上关于GET与POST请求⽅式的区别的⽂章很多,但却都不够全⾯。
现在我们来全⾯阐述这两种⽅法的区别。
(⼀)从HTTP报⽂来看 POST请求⽅式将请求信息放置在报⽂体中,相获得请求信息必须解析报⽂,因此安全性较GET⽅式要⾼⼀些(事实上要获得报⽂体中的请求信息也是很容易的,因此安全性上两者并没有太多的区别,具体解决传输过程中的安全性问题还要靠HTTPS),此外在请求报⽂中含有报⽂体。
由于GET中的请求信息放置在URL中,因此是有长度限制的,因为URL本⾝是有长度限制的。
POST中的请求信息是放置在报⽂体中,因此对数据长度是没有限制的。
(⼆)从数据库层⾯来看 CET请求⽅式符合幂等性和安全性,(幂等性的定义:对数据库的⼀次操作和多次操作获得的结果是⼀致的,则认为符合幂等性。
安全性的定义:对数据库的操作没有改变数据库中的数据,则认为符合安全性),GET请求⽅式是做查询操作,因此不会改变数据库中原有的数据,认为符合安全性。
事实上GET请求可能会出现多次请求的结果(例如在两次请求中间对数据库中的数据作了更改),从这来说是不符合幂等性的定义,但是因为GET请求知识查询数据库,不会对数据库做任何更改,因此也认为是幂等的。
POST请求⽅式是既不幂等⼜不安全,⾸先POST请求⽅式往数据库中提交数据的,因此会改变数据库中的数据。
其次,POST请求⽅式每次获得的结果都有可能不⼀样,因为POST请求是作⽤在上⼀级的URL上的,则每⼀次请求都会添加⼀份新资源(这也是POST和PUT⽅式的最⼤区别,PUT⽅式是幂等的)。
注意:在这⾥提到的安全性和上⼀部分提到的安全性不是同⼀概念,不要混淆。
(三)从其他层⾯来看 GET请求能够被缓存。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
吴秦(Saylor)HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等2010-05-18 15:29 by 吴秦, 9606 visits, 网摘, 收藏, 编辑引言HTTP协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来。
但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差异?GET或POST传送数据量的大小有限制吗?HTTP响应的状态有哪些?以及在C#中你如何使用?如果你不能清楚地回答其中的大部分问题,那么这篇文章就是为你准备的!大纲如下:•1、HTTP概述o 1.1、HTTP协议的客户端与服务器的交互o 1.2、HTTP消息o 1.3、HTTP请求的方法o 1.4、HTTP响应的代码•2、抓包分析•3、POST与GET的差异•4、以一个实例说明C#中如何使用POST、GET等操作o 4.1、HttpWebRequesto 4.2、HttpWebResponseo 4.3、编写WinForm程序打开博客园首页(附源码)1、HTTP概述为了唤醒你对HTTP协议的记忆或使你能够对HTTP协议有所了解,首先简单一下HTTP协议。
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
所有的WWW文件都必须遵守这个标准。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
HTTP的发展是万维网协会(World Wide Web Consortium)和Internet工作小组(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,其中最著名的就是RFC 2616。
RFC 2616定义了HTTP协议中一个现今被广泛使用的版本——HTTP 1.1。
1.1、HTTP协议的客户端与服务器的交互HTTP是一个客户端和服务器端请求和应答的标准(TCP)。
客户端是终端用户,服务器端是网站。
通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为 80)的HTTP请求。
(我们称这个客户端)调用户代理(user agent)。
应答的服务器上存储着(一些)资源,比如HTML文件和图像。
(我们称)这个应答服务器为源服务器(origin server)。
在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnel)。
尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。
事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。
HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。
HTTP服务器则在那个端口监听客户端发送过来的请求。
一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。
HTTP使用TCP而不是UDP的原因在于(打开一个)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。
通过HTTP或者HTTPS 协议请求的资源由统一资源标识符(Uniform Resource Identifiers,或者,更准确一些,URI)来标识。
客户端与服务器端的结构与交互过程可以表示为下面2张图:图1、Web客户端-服务器端结构(其中web服务器的超文本链接,即通过网站上的一个链接跳转到了其他服务器上)图2、Web客户端与服务器端的交互1.2、HTTP消息客户端与服务器之间的交互用到了两种类型的消息:请求(Request)和响应(Response)。
HTTP请求的格式为:图3、HTTP请求的格式HTTP响应的格式为:图4、HTTP响应的格式从上面可以看出HTTP的请求和响应消息的首部均包含可变数量的字段,用一个空行(blank line)将所有首部字段(header)与消息主体(body)分隔开来。
一个首部字段由字段名和随后的冒号、一个空格和字段值组成,字段名不区分大小写。
报文头可分为三类:一类应用于请求,一类应用于响应,还有一类描述主体。
有一些报文头(例如:Date)既可用于请求又可用于响应。
描述主体的报文头可以出现在POST请求和所有响应报文中。
HTTP的首部字段如下图所示:图5、HTTP首部字段1.3、HTTP请求的方法HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI 指定的资源的不同操作方式:•OPTIONS返回服务器针对特定资源所支持的HTTP请求方法。
也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
•HEAD向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。
这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
•GET向特定的资源发出请求。
注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中。
其中一个原因是GET可能会被网络蜘蛛等随意访问。
•POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
数据被包含在请求体中。
POST请求可能会导致新的资源的建立和/或已有资源的修改。
•PUT向指定资源位置上传其最新内容。
•DELETE请求服务器删除Request-URI所标识的资源。
•TRACE回显服务器收到的请求,主要用于测试或诊断。
•CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
方法名称是区分大小写的。
当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed);当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。
HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。
此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。
安全方法开发者应当意识到他们的软件代表了用户在因特网上进行交互,并且应当告知用户,他们正在进行的操作可能对他们自身或者其他人有未曾预料的重要影响。
特别地,对于GET和HEAD方法而言,除了进行获取资源信息外,这些请求不应当再有任何其他意义。
也就是说,这些方法应当被认为是“安全的”,即所谓安全的意味着该操作用于获取信息而非修改信息。
客户端应当使用其他“非安全”方法,例如POST、PUT及DELETE来以特殊的方式(通常是按钮而不是超链接)使得客户能够意识到可能要负的责任(例如一个按钮带来的资金交易)或者被告知正在请求的操作可能是不安全的(例如某个文件将被上传或删除)。
但是,不能想当然地认为服务器不会在处理某个GET请求时不会产生任何副作用。
事实上,很多动态资源会把这作为其特性。
这里重要的区别在于用户并没有请求这一副作用,因此不应由用户为这些副作用承担责任。
幂等方法假如在不考虑诸如错误或者过期等问题的情况下,若干次请求的副作用与单次请求相同或者根本没有副作用,那么这些请求方法就能够被视作“幂等”的。
GET,HEAD,PUT和DELETE方法都有这样的幂等属性,同样由于根据协议,OPTIONS,TRACE都不应有副作用,因此也理所当然也是幂等的。
假如某个由若干个请求做成的请求串行产生的结果在重复执行这个请求串行或者其中任何一个或多个请求后仍没有发生变化,则这个请求串行便是“幂等” 的。
但是,可能出现若干个请求做成的请求串行是“非幂等”的,即使这个请求串行中所有执行的请求方法都是幂等的。
例如,这个请求串行的结果依赖于某个会在下次执行这个串行的过程中被修改的变量。
1.4、HTTP响应的代码服务器程序响应的第一行叫状态行。
状态行以HTTP版本号开始,后面跟着3位数字表示响应代码,最后是易读的响应短语。
根据第一位可以把响应分成5类:图6、HTTP响应代码2、抓包分析现在我们对HTTP基本上算是了解了,下面我用wireshark抓取打开博客园首页时,我的电脑与博客园服务器的交互过程的HTTP数据包。
做好准备工作,关闭一些可能干扰我们抓取打开博客园的相关程序。
如下图,我们在浏览器中输入并确定时,首先抓到如下包:图7、打开博客园抓取的包从图中可以看出,我们在浏览器中输入并确定时是向服务器发送了一个HTTP请求消息:GET / HTTP/1.1。
根据1.2中介绍的HTTP消息的格式,我们知道GET对应request、/对应request-line、HTTP/1.1对应版本号。
除了请求行之外,发送了一些首部字段,如:Accept、Accept-Language、User-Agent、Accept-Encoding、Host、Connection等。
而且可以看出他们的格式就是:首部字段名: 字段值,注意冒号后面有个空格。
接下来我们看一下GET / HTTP/1.1请求的响应消息是怎样的:图8、GET / HTTP/1.1请求的响应消息响应消息的状态行是:HTTP/1.1 200 OK,其中HTTP/1.1对应版本号、200对应response-code、OK对应response-phrase。
除了状态行,还返回了一些首部字段,如:Cache-Control、Content-Type、Content-Encoding、Expires、Last-Modified、Vary、Server等等。
(通过上图我们可以看出,博客用的是IIS7.0)上面抓的是GET的数据包,现在我来看一个POST的数据包——打开博客园首页过程中获取左边的分类信息就是通过POST请求返回的。
图9、POST数据包我们可以看到,POST /ws/PublicUserService.asmx/GetLoginInfo HTTP/1.1。
除了把GET换成了POST之外,其它信息差不多。
下面我们放大看下发送的首部字段:图10、POST /ws/PublicUserService.asmx/GetLoginInfo HTTP/1.1的首部字段NOTE:本节涉及的一些首部字段我就不在这里解释了。
我想,到了这里大家对HTTP的认识应该更深入了一步。
3、POST与GET的差异1.3中介绍了8种方法,其中GET与POST最基本和常用了。
表单提交中get和post方式的区别归纳如下几点:•GET是从服务器上获取数据,POST是向服务器传送数据。