HTTP请求中的GET-POST方式
一、前言部分(概念)
URL(统一资源定位符 )的作用:使用 URL 可以确定一个资源所在的位置
HTTP(超文本传输协议)
基于
TCP/IP的定义数据在万维网中如何通信的协议设计目的是保证客户端与服务器之间的通信
在客户端向服务器发起请求时,两种最常用的 HTTP 方法是:GET 和 POST
在 html 页面的 form 表单中,如果不指定 method 提交方式,默认是以 GET 方式提交
二、对比 GET 与 POST
二者最大的差异
请求参数所在的位置不同
GET 方式把参数包含在URL,即请求行中,参数会显示在浏览器地址栏上
POST 方式的参数包含在请求体中
正是因为请求参数所在的位置不同,从而造成了:
GET 请求时 URL 长度受限(理论上get请求只能携带2k大小的数据)
POST 请求提交参数的相对安全
这里的相对安全只是单纯地因为 post 请求参数包含在请求体中,不会显示在地址栏上被看到
GET 与 POST 请求本质上并无区别
因为 GET 和 POST两种请求方式都是基于 TCP 协议
差异的产生就如第一点所说,请求参数所在的位置不同。而浏览器和web服务器又限制了 URL 的长度,
为什么限制URL的长度?
服务器是因为处理长 URL 要消耗比较多的资源,为了性能和安全(防止恶意构
造长 URL 来攻击)考虑,会给 URL 长度加限制。
深层了解:POST 请求产生两个数据包?
GET 产生一个 TCP 数据包,POST 产生两个 TCP 数据包
其实并不是所有浏览器都会在 POST 请求中发送两次包,Firefox 就只发送一次
两次发包并不是 POST 的必然性,只是因浏览器软件而异
三、两种请求方式如何灵活使用?
GET - 从指定的资源请求获取数据。
POST - 向指定的资源提交要被处理的数据
当数据量较大的请求(提交表单、上传文件)时,传递密码及隐私内容时采用POST;
其余情况可用get。
使用 GET 请求如果需要传递参数,那么参数只能通过以下方式传递:
url?参数名=参数值&参数名=参数值
add.do?name=value&name=value
四、常见的状态码
在 HTTP 请求中,通过状态码可以清晰的看到请求的结果,如果请求出错,可以通过状态码来锁定问题所在
HTTP协议中提供了许多的状态码,列举我们常见的:
200 OK 返回正常
302 Found 重定向,让浏览器跳转到其它地址
304 Not Modified 服务端资源无变化,可使用缓存资源
400 Bad Request 请求参数不合法
401 Unauthorized 请求需要用户的身份认证
403 Forbidden 服务端禁止访问该资源
404 Not Found 服务端未找到该资源
408 Request Time-out 服务器等待客户端发送的请求时间过长,超时
415 Unsupported Media Type 服务器无法处理请求附带的媒体格式
500 Internal Server Error 服务端异常
五、RESTful 风格补充
RESTful风格中,常用的方法有4种,分别是GET,POST,PUT,DELETE。URL 定位了这个资源,HTTP中的GET,POST,PUT,DELETE就是对应着对这个资源的查,増,改,删4个操作。
参考链接
HTTP请求中的GET-POST方式的更多相关文章
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
转载:http://blog.csdn.net/mhmyqn/article/details/25561535 HTTP请求中,如果是get请求,那么表单参数以name=value&name1 ...
- AJAX POST请求中參数以form data和request payload形式在servlet中的获取方式
HTTP请求中,假设是get请求,那么表单參数以name=value&name1=value1的形式附到url的后面,假设是post请求,那么表单參数是在请求体中,也是以name=value& ...
- [转]AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
转载至 http://blog.csdn.net/mhmyqn/article/details/25561535 最近在写接收第三方的json数据, 因为对java不熟悉,有时候能通过request能 ...
- 在Ajax请求中什么时候用GET方式什么时候用POST方式?
当我们有大量数据要传送时最好的办法是一次发出多个只传递少量信息的Ajax调用时.如果你正用一个Ajax调用发送大量数据,那么最好是结束这种做法,因为这样做并不能节约时间. 因此,需要传送大量数据能成为 ...
- 工具类: 用于模拟HTTP请求中GET/POST方式
package com.jarvis.base.util; import java.io.BufferedReader; import java.io.IOException; import java ...
- 浏览器在一次 HTTP 请求中,需要传输一个 4097 字节的文本数据给服务端,可以采用那些方式?
浏览器在一次 HTTP 请求中,需要传输一个 4097 字节的文本数据给服务端,可以采用那些方式? 存入 IndexdDB 写入 COOKIE 放在 URL 参数 写入 Session 使用 POST ...
- java Web中页面跳转方式之请求转发
1.在一个请求中跨越多个Servlet 2.多个Servlet在一个请求中,他们共享request对象.就是在Servlet01中setAttribute()保存数据在Servlet02中由getAt ...
- AGS中通过FeatureServer插入数据失败、插入数据在WMTS请求中无法显示以及version概念的讨论
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在多个项目中,当我方接口给其他部门人员使用时出现了插入数据失 ...
- SpringMVC无法获取请求中的参数的问题的调查与解决(1)
*更新:本文第一版中犯了比较大的错误,无论@RequestBody还是@RequestParam注解一样,都会使用全局的Encoding进行解码,会导致特殊编码的参数值丢失. 只要抛弃掉注解,就完全可 ...
随机推荐
- uva 10253 Series-Parallel Networks (整数划分+多重集)
UVa Online Judge 题意是计算给定数量的边通过串联并联两种方式,能组成多少种不同的网络.将它转化为一个树形结构,也就是求有多少不同构的树. 代码如下: #include <cstd ...
- 最适合 Python 入门的资源有哪些?
https://blog.csdn.net/zV3e189oS5c0tSknrBCL/article/details/81230593 学习任何一门编程语言或者技能基本上都遵循3个步骤,第一步是看,第 ...
- Websocket 简单对话:静态网页与pycharm对话
WebSocket websocket 是一种在单个Tcp连接上进行双全工通信的协议.websocket通信协议于2011年被IETF定为标准RFC6455,并 由RFc7936补充规范.WebSoc ...
- setTimeout与setInterval有何区别?
①setTimeout和setInterval的语法相同.它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码. ②不过这两个函数还是有 ...
- SQL,范式,事务
数据库范式: 构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式. 范式是符合某一种级别的关系模式的集合.数据库中的关系必须满足一定的要求,即满足不同的范式. 满足最低要求的范式是第一范式 ...
- 洛谷P3178 [HAOI2015]树上操作 题解 树链剖分+线段树
题目链接:https://www.luogu.org/problem/P3178 这道题目是一道树链剖分的模板题. 但是在解决这道问题的同事刷新了我的两个认识: 第一个认识是:树链剖分不光可以处理链, ...
- 2019-8-31-dotnet-core-黑科技·String.IndexOf-性能
title author date CreateTime categories dotnet core 黑科技·String.IndexOf 性能 lindexi 2019-08-31 16:55:5 ...
- nginx 301 将不带www域名,重定向到www域名
// nginx 官方推荐 server { listen 80; server_name example.org; return 301 http://www.example.org$request ...
- spring security BCryptPasswordEncoder加密解密,不错的随机盐,不错的加密解密方法
项目中用这个加密感觉不错啊,推荐: 1.先大体看看,了解一下 浅谈使用springsecurity中的BCryptPasswordEncoder方法对密码进行加密(encode)与密码匹配(match ...
- java 使用反射调用可变参数方法
使用反射操作对象-调用可变参数方法 要把可变参数都当做是其对应的数组类型参数; 如 show(XX... is)作为show(XX[] is)调用; 若可变参数元素类型是引用类型: JDK内部接收到参 ...