发现很多面试题都会问道Get和Post的区别,今天来了兴致,好好地研究一下。Get和Post的区别在网上可以搜到很多,首先看一下基本的定义:
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。Post比Get的安全性高。实质上,GET和POST只是发送机制不同,并不是一个取一个发!
为了能看到具体的Get和Post方法,发送的数据。我们模拟一下Get和Post的过程。因为Http是基于Tcp实现的,所以我们使用底层的Socket模拟一个Http服务器。我们将获得的Get或者Post发送过来的请求消息,打印出来。
ServerSocket serverSocket=new ServerSocket(8802); Socket client=serverSocket.accept(); InputStreamReader in=new InputStreamReader(client.getInputStream()); while(true){ System.out.print((char)in.read()); }
我们写一个html模拟客户端,
get方式的:
<form method="get" action="http://10.13.30.160:8802"> name:<input type="text" name="name" /><br> age:<input type="text" name="age" /><br> <input type="submit" /> </form>
post方式的:
<form method="post" action="http://10.13.30.160:8802"> name:<input type="text" name="name" /><br> age:<input type="text" name="age" /><br> <input type="submit" /> </form>
保存为.html文件之后,分别打开。服务器会打印出具体消息:
get方式的:
GET /?name=wjy&age=24 HTTP/1.1 Host: 10.13.30.160:8802 Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 BIDUBrowser/2.x Safari/537.31 Accept-Encoding: gzip,deflate Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: iso-8859-1,*,utf-8
post方式的:
POST / HTTP/1.1 Host: 10.13.30.160:8802 Connection: keep-alive Content-Length: 15 Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Origin: null User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 BIDUBrowser/2.x Safari/537.31 Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip,deflate Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: iso-8859-1,*,utf-8 name=wjy&age=24
我们通过对比可以发现:Get和Post在请求中的参数的位置不同。
HTTP请求一般包含以下部分:
1:Request-Line
2:Header
3:<空行>
Message-Body[GET请求不包含Message-Body]
其中Request-Line包含三个部分:
Method(GET/POST/其他)、Request-URI、HTTP-Version,三个部分由空格隔开。
所以可以知道,GET请求的参数在Request-Line的Request-URI中,而POST请求的参数在请求主体Message-Body中。
相关推荐
Ajax中Get请求和Post请求的区别 简单例子 何时使用Get请求,何时使用Post请求
JavaWeb笔记08Servlet中get和post区别.pdf
表单的提交方式POST和GET有什么区别 ,在这里有详细的阐述,我相信它一定对你有所帮助!
PHP 中的get与 post 方法的区别
get、post区别
详细讲解了get和post的区别 、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
表单提交中get和post的区别 表单提交中get和post的区别
本文针对网页开发中使用Http协议中POST和GET方法的区别进行了讨论,希望对大家有帮助
Django 中request.get和request.post的区别 POST和GET差异: POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。 POST和GET都...
网络编程中用到的交互方式post和get的区别
AJAX POST与get提交数据的差别,喜欢了解详细内容的朋友可以下载学习!
get和post有什么区别,主要讲述get和post的详细区别,在servlet当中两种方式有什么不同
Servlet中Get与Post区别与范例讲解 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45151569
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们...到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
c# 运用get/post 和使用webservicec# 运用get/post 和使用webservicec# 运用get/post 和使用webservicec# 运用get/post 和使用webservice
详细介绍了HTTP中Get与Post的区别与联系。
http协议get与post请求方式的区别
代码审核不是简单的检查代码,审核代码的原因是确保代码能安全的做到对信息和资源进行足够的保护,所以熟悉整个应用程序的业务流程对于控制潜在的风险是非常重要的。审核人员可以使用类似下面的问题对开发者进行访谈...
GET和POST使用区别 GET GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET 请求参数在URL中的是可见的 GET 请求有长度限制 1、在浏览器上表现的区别 GET和POST使用区别 POST POST 请求...
HTTP协议GET和POST的使用区别 摘 要:浅谈HTTP中GET、POST用法以及它们的区别 关键词: HTTP协议、POST方法、GET方法、区别 HTTP方法 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,...