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.使用 ...
随机推荐
- 【spring boot】spring boot 拦截器
今日份代码: 1.定义拦截器 import com.alibaba.fastjson.JSON; import org.apache.commons.collections.CollectionUti ...
- Android java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/ProtocolVersion
问题是突然出现的,因为我走测试的时候没有问题,但是正式的时候就这样了,报错APP发生的样式是直接闪退.问题报错位置大概是Applicition类,因为这里基本是都是初始化第三方地方, 问题形成原因:可 ...
- 执行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://**** ...
- Netty系列之源码解析(一)
本文首发于微信公众号[猿灯塔],转载引用请说明出处 接下来的时间灯塔君持续更新Netty系列一共九篇 当前:Netty 源码解析(一)开始 Netty 源码解析(二): Netty 的 Channel ...
- Java实现上传文件到指定服务器指定目录(ChannelSftp实现文件上传下载)
package com.tianyang.task.utils; import java.io.File;import java.io.FileInputStream;import java.io.I ...
- 最新Spark入门篇
一.Spark简介 1.什么是Spark Apache Spark是一种快速的集群计算技术,基于Hadoop MapReduce技术,扩展了MapReduce模型,主要特性是在内存中集群计算,速度更快 ...
- 记一次线上服务CPU 100%的处理过程
告警 正在开会,突然钉钉告警声响个不停,同时市场人员反馈客户在投诉系统登不进了,报504错误.查看钉钉上的告警信息,几台业务服务器节点全部报CPU超过告警阈值,达100%. 赶紧从会上下来,SSH登录 ...
- FileBeat yml配置文件 -常用参数详解
#filebeat 5.2.2 #prospector(input)段配置 filebeat.prospectors: #每一个prospectors,起始于一个破折号"-" - ...
- JavaScript学习 Ⅱ
五. JavaScript 数据类型 JavaScript 变量能够保存多种数据类型:数值.字符串值.数组.对象等等: var length = 7; // 数字 var lastName = &qu ...
- WPF基于.Net Core
WPF基于.Net Core 因为最近.net core的热门,所以想实现一下.net core框架下的WPF项目,还是MVVM模式,下面就开始吧,简单做一个计算器吧. 使用VS2019作为开发工具 ...