HTTP中POST和GET的区别
一.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请求一般不应产生副作用。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST请求就不那么轻松了。POST表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过POST请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解)。
http://www.cnblogs.com/stu-acer/archive/2006/08/28/488802.html
GET与POST方法实例:
GET实例 |
POST实例 |
GET /books/?name=Professional%20Ajax HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive
|
POST /HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
(此处空一行)
name=Professional%20Ajax&publisher=Wiley
|
3.表单提交中get和post方式的区别归纳如下几点:
(1)get是从服务器上获取数据,post是向服务器传送数据。
(2)对于表单的提交方式,在服务器端只能用Request.QueryString来获取Get方式提交来的数据,用Post方式提交的数据只能用Request.Form来获取。
(3)一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题。比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。但是在分页程序中,用Get方式就比用Post好。
二.HTTP响应
1. HTTP响应格式:
<status line>
<headers>
<blank line>
[<response-body>]
在响应中唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。
HTTP响应实例:
HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122
<html>
<head>
<title>Wrox Homepage</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>
|
2. 最常用的状态码有:
◆200 (OK):找到了该资源,并且一切正常。
◆304 (NOT MODIFIED):该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
◆401 (UNAUTHORIZED):客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
◆403 (FORBIDDEN):客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
◆404 (NOT FOUND):在指定的位置不存在所申请的资源。
分享到:
相关推荐
htttp状态码htttp状态码htttp状态码htttp状态码htttp状态码
1.一个简单的关于 HTTP GET,POST的简单实例 第一个方法是get 第二个是POST
htttp 权威指南,web 开发者必备
刚学C#,没多少经验,有许多的不足希望大家多多交流
使用Wireshark工具对自己电脑的WLAN端口进行抓包,分析其访问一个网站(如www.baidu.com)的过程及所使用的协议,并对HTTP客户请求报文和HTTP服务器响应报文格式进行分析。完成如下任务: 1. 给出HTTP请求报文和响应...
简单的怎么用Htttp访问服务器下载,代码比较简单
今天在linux中使用curl发送一个post请求时,带有json的数据,在发送时发现json中的变量没有解析出来 如下 curl -i -X POST -H 'Content-type':'application/json' -d {BTime:$btime} http://api.baidu.com 变量...
LoadRunner测试HTTP协议下载文件,内有注释,已经过长时间测试。
NULL 博文链接:https://uuflower.iteye.com/blog/1832672
详尽的HTTP解释; 中英文翻译; 实例
在主题上发布消息时,应将其转发到所有订户端点... 描述:在主题和发送的URL之间建立订阅 正文参数:url POST / publish /:topic 描述:将消息发布到特定主题中的所有已订阅URL 主体参数:带有任何数据的json对象
VS2015,C++,Release的jsoncpp, libcurl,openssl,其中jsoncpp的汉字乱码已经更改了源码,openssl支持htttp.
移动作为客户端访问http请求,get/post。 RequestUtil.initHttp().doPost2(String Url, String content, "application/json", "UTF-8", HashMap map);
//ASIFormDataRequest方式 POST上传图片 -(NSDictionary *)addPicWithDictionary:(NSDictionary *)sugestDic{ NSDictionary *tempDic=nil; NSString *url=[NSString stringWithFormat:@...
用户windows客户端通过htttp传输协议和百度ai平台进行互联并传输信息。 支持软件 a.操作系统名称及版本号:win10,win8,win7 b.语言编译系统或汇编系统的名称及版本号:python 版本号3.6.6 c.其他必要的支持软件:...
用此工具可以简单搭建一个HttpService服务。客户端输入网站+端口+指定文件夹即可以访问。
通过HTTPClient发起HTTPS GET请求(返回值为字符串)、POST请求(返回值为JSONOBJECT),需引入fastJson的jar包
作业4 基本上是与处理某些网页的htttp服务器通信
ESP32-CAM模组可用于自动,连续和连续性地存储,并且可以使用ESP32-CAM模组进行自动交互,并使用HTTP协议卡拉维拉OV2640录像带录像带,拉维斯塔多国广播电视网,拉莫斯帕奇纳录像带电视网,自动变速箱,自动换向器,...
wxPayHelper.SetParameter("notify_url", "htttp://www.baidu.com"); wxPayHelper.SetParameter("spbill_create_ip", "127.0.0.1"); wxPayHelper.SetParameter("input_charset", "GBK"); System.out....