form表单两种提交方式的不同
我们在使用<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表单两种提交方式的不同的更多相关文章
- form表单4种提交方式
<!DOCTYPE html><html> <head> <title>JavaScript表单提交四种方式</title> <met ...
- 6.form表单四种提交方式
一.使用jquery的ajax方式提交: 二.使用easyui的form组件内置的submit方法提交: 三.先定义表单,然后使用submit方法提交: 四.先定义表单,然后按下enter键时提交:
- HTML form表单的默认提交方式
默认为Get,亲测.. key值为控件name属性值,如果没有 url中就没有此值 aspx中默认Form表单提交方式为post
- Form表单三种提交按钮的区别?
1.<input type='button' id='btn' onclick='check()' value="提交"> 说明:只是普通的按钮(不附带提交功能),不会 ...
- 前端提交表单两种验证方式记录 jq或h5 required属性
JQuery: <form id="form"> <input type="text" name="aaa"> &l ...
- form表单中get和post两种提交方式的区别
一.form表单中get和post两种提交方式的区别? 1.get提交表单中的内容在链接处是可见的.post不可见 2.post相比于get是安全的 3.post不收限制大小,get有限制大小(黑马视 ...
- html表单中的input元素的两种提交方式比较(get/post)
Http存在两种最常用的提交方式:Get和Post(电话面试有问到两种提交方式的区别) 什么是HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客 ...
- form提供的两种数据传输方式 get和post method=”post“和method=”get”
虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一些差异,但是了解二者的差异在以后的编程也会很有帮助的. ...
- 防止表单提交时刷新页面-阻止form表单的默认提交行为
最近在写 ajax 提交的时候遇到一个问题,在执行 ajax 提交之后,浏览器页面自动刷新了,主要是没有 由于form 表单的默认提交行为.一下是几种阻止 form 表单默认提交行为的方式. 1.使用 ...
随机推荐
- sublime清空控制台
解决方法 – 只需运行print('\n'*100)打印100个换行符,您将无法看到任何以前的输出,除非你向上滚动一些距离.
- 线程基础知识01-Thread类,Runnable接口
常见面试题:创建一个线程的常用方法有哪些?Thread创建线程和Runnable创建线程有什么区别? 答案通常集中在,继承类和实现接口的差别上面: 如果深入问一些问题:1.要执行的任务写在run()方 ...
- 「疫期集训day12」阴雨
我们走进了泥泞的雨林----阿尔贡森林里艰难前进的士兵 今天考试一般,T1T2签到题没啥好说的,剩下三个小时全肛T3(我脑子有泡,前几天刚做了一道类似T4的难题,公式更难推),9:00->10: ...
- 逃学的小孩,树形dp
先找到题 题意: 中文题,没什么好解释的,也没什么歧义. 分析: 首先我们想一下他的路径将会是怎样的:A-B-C/A-C-B,其实就是求一下min(AB+BC,AC+BC),ABC任选.挺简单,首先证 ...
- Mac OS下安装mysqlclient遇到的一些坑
在玩django的同时,必须需要mysqlclient和pillow包,想在本地Mac上装上mysqlclient,但着实遇到不少坑,最终还是在github issue中找到了解决方法,这里记录一下, ...
- redis zset底层实现原理
一.Zset编码的选择 1.有序集合对象的编码可以是ziplist或者skiplist.同时满足以下条件时使用ziplist编码: 元素数量小于128个 所有member的长度都小于64字节 其他: ...
- 小程序报错 parameter.content should be String instead of Undefined;
自己遇到了两种情况会导致这个问题 1.参数名写错未定义,然后赋值的时候值为undefined 2.服务端返回的值错误,返回的值为空,导致赋值时报错 解决方法: 1.检查参数名,如不是全局变量的应在da ...
- 二分查找&二叉排序树
首先我们先来复习一下二分查找的算法 对于正向序列的二分查找 递归实现: bool binary_search(vector<int> &sort_arry,int begin,in ...
- flask 源码专题(六):session处理机制
前言 flask_session是flask框架实现session功能的一个插件,用来替代flask自带的session实现机制,flask默认的session信息保存在cookie中,不够安全和灵活 ...
- java 基本语法(七) 流程控制(四) 补充:Scanner类的使用
/* 如何从键盘获取不同类型的变量:需要使用Scanner类 具体实现步骤: 1.导包:import java.util.Scanner; 2.Scanner的实例化:Scanner scan = n ...