我们在使用<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. 【spring boot】spring boot 拦截器

    今日份代码: 1.定义拦截器 import com.alibaba.fastjson.JSON; import org.apache.commons.collections.CollectionUti ...

  2. Android java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/ProtocolVersion

    问题是突然出现的,因为我走测试的时候没有问题,但是正式的时候就这样了,报错APP发生的样式是直接闪退.问题报错位置大概是Applicition类,因为这里基本是都是初始化第三方地方, 问题形成原因:可 ...

  3. 执行python 爬虫脚本时提示bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

    from bs4 import BeautifulSoupfrom urllib.request import urlopenimport re html = urlopen('http://**** ...

  4. Netty系列之源码解析(一)

    本文首发于微信公众号[猿灯塔],转载引用请说明出处 接下来的时间灯塔君持续更新Netty系列一共九篇 当前:Netty 源码解析(一)开始 Netty 源码解析(二): Netty 的 Channel ...

  5. Java实现上传文件到指定服务器指定目录(ChannelSftp实现文件上传下载)

    package com.tianyang.task.utils; import java.io.File;import java.io.FileInputStream;import java.io.I ...

  6. 最新Spark入门篇

    一.Spark简介 1.什么是Spark Apache Spark是一种快速的集群计算技术,基于Hadoop MapReduce技术,扩展了MapReduce模型,主要特性是在内存中集群计算,速度更快 ...

  7. 记一次线上服务CPU 100%的处理过程

    告警 正在开会,突然钉钉告警声响个不停,同时市场人员反馈客户在投诉系统登不进了,报504错误.查看钉钉上的告警信息,几台业务服务器节点全部报CPU超过告警阈值,达100%. 赶紧从会上下来,SSH登录 ...

  8. FileBeat yml配置文件 -常用参数详解

    #filebeat 5.2.2 #prospector(input)段配置 filebeat.prospectors: #每一个prospectors,起始于一个破折号"-" - ...

  9. JavaScript学习 Ⅱ

    五. JavaScript 数据类型 JavaScript 变量能够保存多种数据类型:数值.字符串值.数组.对象等等: var length = 7; // 数字 var lastName = &qu ...

  10. WPF基于.Net Core

    WPF基于.Net Core 因为最近.net core的热门,所以想实现一下.net core框架下的WPF项目,还是MVVM模式,下面就开始吧,简单做一个计算器吧. 使用VS2019作为开发工具 ...