我们在使用<Form>表单的时候,最常用的提交方式就是Get和Post。我们都知道这两种方式最大的差别就是安全性,除此之外,它们还有哪些其他的区别,你知道吗?

  在<Form>表单中,Method的提交方式有两种,分别是Get请求和Post请求。

  这两种请求方式分别对应HttpServlet中的doGet()doPost()方法(继承HttpServlet类并重写doGet()doPost()方法)。

  它们的区别如下:

1.参数传递的方式不同:

  • Get请求相较于Post请求来说,更加的简单直接,因为Get请求是把参数放在HttpHead中的,也就是直接用”?”隔开拼接在URL路径之后的,参数之间使用”&”来分隔开,所以Get请求是没有请求包体的,参数都是明文显示的
  • Pos请求并不是拼接在URL之后的,它是将参数放在HttpBody(Http报文)中的,所以相较于可以直接在URL栏中看到参数的get请求,Post请求的参数是隐匿起来的

2.能够传递的数据量的不同:

  • Get请求简单直接,但缺点也很明显,因为它是通过URL提交的数据,所以其能传递的数据量和URL的长度有直接关系。但从本质上来说,Get请求是没有参数上限的,因为HTTP协议规范没有对其长度约束,之所以常说Get请求有长度限制,是因为这个限制是特定浏览器和服务器对它的限制。IE的限制为2083字节(2K+25),其他浏览器没有规定,此时限制取决于操作系统能够支持多少
  • Post请求理论上来讲是不存在上限的,因为HTTP协议没有对Post请求进行大小限制,所以无法说Post请求最大限制是多少,而限制Post请求的是服务器的处理能力

3.请求的安全性不同:

  • get请求无安全性可言:因为它的参数是直接拼接在url之后的明文,我们可以直接从地址栏或浏览历史记录中获取敏感信息,造成严重的密码泄露问题。除此之外,还可能会遭受Cross-site request forgery(跨站请求伪造)攻击。所以页面需要输入重要数据的时候,最好不要用get方式提交
  • Post请求相较于get请求来讲,是真正意义上的安全:它的数据都放在http报文中,所以从url地址栏和浏览器浏览历史记录中,是无法直接获取到密码等敏感信息的(除浏览器缓存)

4.数据编码格式的不同

  • Get请求为<Form>表单默认的请求方式,当采用这种方式提交数据的时候,其URL后的参数编码格式为ISO-8859-1,这个时候我们在Servlet中获取的数据就会出现乱码,所以通常我们会进行转码操作
  • Post请求虽然没有这个问题,但是我们在实际操作的时候,也会经常给它加上转码的操作以防万一

5.发送机制不同

  • Get请求的发送机制是一种向服务器索取数据的请求机制
  • Post请求的发送机制是一种向服务器提交数据的请求机制,这是其本质的区别。

6.页面刷新时有无提示的不同

  • 采用Get请求的时候,如果我们在提交数据的时候刷新页面,则不会提示我们。
  • 采用Post请求的时候,如果我们在提交数据的时候刷新页面,则会提示我们“数据已改变,是否重新提交表单”

之所以会出现提示,是因为在我们刷新页面的时候,浏览器会将数据通过HTTP报文偷偷发送给服务器;

而直接输入网址的话就相当于重新发送了一次请求,所以这个新的页面就不会再偷偷的发送HTTP报文给服务器了。

form表单两种提交方式的不同的更多相关文章

  1. form表单4种提交方式

    <!DOCTYPE html><html> <head> <title>JavaScript表单提交四种方式</title> <met ...

  2. 6.form表单四种提交方式

    一.使用jquery的ajax方式提交: 二.使用easyui的form组件内置的submit方法提交: 三.先定义表单,然后使用submit方法提交: 四.先定义表单,然后按下enter键时提交:

  3. HTML form表单的默认提交方式

    默认为Get,亲测.. key值为控件name属性值,如果没有 url中就没有此值 aspx中默认Form表单提交方式为post

  4. Form表单三种提交按钮的区别?

    1.<input type='button' id='btn' onclick='check()' value="提交"> 说明:只是普通的按钮(不附带提交功能),不会 ...

  5. 前端提交表单两种验证方式记录 jq或h5 required属性

    JQuery: <form id="form"> <input type="text" name="aaa"> &l ...

  6. form表单中get和post两种提交方式的区别

    一.form表单中get和post两种提交方式的区别? 1.get提交表单中的内容在链接处是可见的.post不可见 2.post相比于get是安全的 3.post不收限制大小,get有限制大小(黑马视 ...

  7. html表单中的input元素的两种提交方式比较(get/post)

    Http存在两种最常用的提交方式:Get和Post(电话面试有问到两种提交方式的区别) 什么是HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客 ...

  8. form提供的两种数据传输方式 get和post method=”post“和method=”get”

    虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一些差异,但是了解二者的差异在以后的编程也会很有帮助的. ...

  9. 防止表单提交时刷新页面-阻止form表单的默认提交行为

    最近在写 ajax 提交的时候遇到一个问题,在执行 ajax 提交之后,浏览器页面自动刷新了,主要是没有 由于form 表单的默认提交行为.一下是几种阻止 form 表单默认提交行为的方式. 1.使用 ...

随机推荐

  1. Layui的分页模块在网站中的应用

    制作网站的时候,有时候我们常常会被一些要求复杂的分页给困住,最后要么就是写一个简单的分页,要么就做成瀑布流的形式. 有了Layui之后,我认为开发人员多了一个选择,那就是尝试用Layui内置的分页模块 ...

  2. Drools之基础语法

    一.规则文件 标准的规则文件以”.drl”结尾. 一套完整的规则文件内容如下: package:包名,只限于逻辑上的管理,若自定义的查询或函数位于同一包名,不管物理位置如何,都可以直接调用. impo ...

  3. angular入门--自定义过滤器

    <html ng-app='app1'> <head> <meta name="generator" content="HTML Tidy ...

  4. 状压DP之集合选数

    题目 [HNOI2012]集合选数 <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不 ...

  5. BZOJ2200 道路与航线 题解

    题目 Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 \((1 <= T <= 25,000)\),编号为\(1T\).这些城镇之间通过\(R ...

  6. 006.Nginx访问控制

    一 Nginx连接限制 1.1 HTTP协议的连接与请求 HTTP是建立在TCP, 一次HTTP请求需要先建立TCP三次握手(称为TCP连接),在连接的基础上再进行HTTP请求. HTTP请求建立在一 ...

  7. redis cluster info显示cluster_state:fail解决方案

    1.查看错误信息: 1.1 错误信息(1) 127.0.0.1:7000> get name (error) CLUSTERDOWN The cluster is down 127.0.0.1: ...

  8. Scala 面向对象(六):面向对象的特征二:继承 (一)

    1 Scala继承的基本语法 class 子类名 extends 父类名 { 类体 } class Person { var name : String = _ var age : Int = _ d ...

  9. java 数据结构(七):Collection接口

    1.单列集合框架结构|----Collection接口:单列集合,用来存储一个一个的对象* |----List接口:存储序的.可重复的数据. -->“动态”数组* |----ArrayList. ...

  10. How to start MySQL on Linux

    启动MySQL数据库 service mysql start 查看MySQL进程 ps -ef |grep mysql 查看MySQL端口号 cd /etc/init.d/ netstat -atnp ...