开发者社区> Lux_Sun> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JavaWeb - HTTP 请求中 Get 和 Post 区别(一)

简介: JavaWeb - HTTP 请求中 Get 和 Post 区别(一)
+关注继续查看

一、原理区别

一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。

HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET和HEAD的HTTP请求不会在服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅指不会修改信息。


根据HTTP规范,POST可能会修改服务器上的资源的请求。比如CSDN的博客,用户提交一篇文章或者一个读者提交评论是通过POST请求来实现的,因为再提交文章或者评论提交后资源(即某个页面)不同了,或者说资源被修改了,这些便是“不安全方法”。

二、表现形式区别

  • HTTP请求的格式
<method> <request-URL> <version>
<headers>
 
<entity-body>

在HTTP请求中,奇异行必须是一个请求行,包括请求方法,请求URL,报文所用HTTP版本信息。紧接着是一个herders小节,可以有零个或一个首部,用来说明服务器要使用的附加信息。在首部之后就是一个空行,最后就是报文实体的主体部分,包含一个由任意数据组成的数据块。但是并不是所有的报文都包含实体的主体部分。

  • GET请求实例
GET http://weibo.com/signup/signup.php?inviteCode=2388493434
Host: weibo.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  • POST请求实例
POST /inventory-check.cgi HTTP/1.1
Host: www.joes-hardware.com
Content-Type: text/plain
Content-length: 18
 
item=bandsaw 2647
  • 两种请求方式的区别
  • 1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。

POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。

因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。

  • 2、传输数据的大小:

在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。

对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。

  • 3、安全性:

POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击。


三、HTTP响应

  • HTTP响应报文的格式
<version> <status> <reason-phrase>
<headers>
 
<entity-body>

status:状态码描述了请求过程中发生的情况。

reason-phrase:是数字状态码的可读版本。

  • 常见的状态码以及含义如下:

200 OK 服务器成功处理请求。

301/302 Moved Permanently(重定向)请求的URL已移走。响应报文中应该包含一个Location URL,说明资源现在所处的位置。

304 Not Modified(未修改) 客户的缓存资源是最新的,要客户端使用缓存内容。

404 Not Found 未找到资源。

501 Internal Server Error 服务器遇到错误,使其无法对请求提供服务。

  • HTTP响应示例
HTTP/1.1 200 OK
 
Content-type: text/plain
Content-length: 12
 
Hello World!


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
http详解4-http协议和工作流程4形成post请求
http详解4-http协议和工作流程4形成post请求
0 0
POST 请求中 http 请求协议内容| 学习笔记
快速学习 POST 请求中 http 请求协议内容,介绍了 POST 请求中 http 请求协议内容系统机制, 以及在实际应用过程中如何使用。
0 0
关于 HTTP post 请求 form data 里的特殊符号,比如加号 plus symbol
对于终端用户来说,表单提交的过程很方便,在某种程度上相当于输入数据,点击提交按钮。
0 0
Angular最新教程-第七节HTTP get post 设置头部 跨域访问
Angular最新教程-第七节HTTP get post 设置头部 跨域访问
0 0
HTTP - Get / Post 请求中,URL & FORM 参数如何分别获取?
HTTP - Get / Post 请求中,URL & FORM 参数如何分别获取?
0 0
JavaWeb - HTTP 请求中 Get 和 Post 区别(二)
JavaWeb - HTTP 请求中 Get 和 Post 区别(二)
0 0
JavaWeb - HTTP 请求中 Post 和 Put 区别
JavaWeb - HTTP 请求中 Post 和 Put 区别
0 0
张三吃饭——竟吃出了HTTP中GET和POST的区别?
文章通过故事情节的引入,介绍了http连接中GET和POST的区别以及原因。
0 0
【前端 · 面试 】HTTP 总结(五)—— GET 和 POST
最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正、交流。
0 0
利用XMLHttpRequest 通过HTTP POST向ABAP backend发送数据
Created by Jerry Wang, last modified on Aug 19, 2014 Javascript source code:
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
阿里巴巴HTTP 2.0实践及无线通信协议的演进之路
立即下载
数据智能人机交互实践
立即下载
低代码开发师(初级)实战教程
立即下载