http请求方式


1.什么是幂等性 (post如何保证明幂等性大问题)

幂等性概念:幂等通俗来说是指不管进行多少次重复操作,都是实现相同的结果。

2.REST请求中哪些是幂等操作

GET,PUT,DELETE都是幂等操作,而POST不是,以下进行分析:

首先GET请求很好理解,对资源做查询多次,此实现的结果都是一样的。

PUT请求的幂等性可以这样理解,将A修改为B,它第一次请求值变为了B,再进行多次此操作,最终的结果还是B,与一次执行的结果是一样的,所以PUT是幂等操作。
同理可以理解DELETE操作,第一次将资源删除后,后面多次进行此删除请求,最终结果是一样的,将资源删除掉了。

POST不是幂等操作,因为一次请求添加一份新资源,二次请求则添加了两份新资源,多次请求会产生不同的结果,因此POST不是幂等操作。

3.根据幂等性区分POST与PUT的使用
了解REST后很长一段时间不能明确区分PUT和POST的区别,在使用时很容易混淆,完全可根据idempotent(幂等性)做区分。
举一个简单的例子,假如有一个博客系统提供一个Web API,模式是这样http://superblogging/blogs/{blog-name},很简单,将{blog-name}替换为我们的blog名字,往这个URI发送一个HTTP PUT或者POST请求,HTTP的body部分就是博文,这是一个很简单的REST API例子。

4.我们应该用PUT方法还是POST方法?

取决于这个REST服务的行为是否是idempotent的,假如我们发送两个http://superblogging/blogs/post/Sample请求,服务器端是什么样的行为?如果产生了两个博客帖子,那就说明这个服务不是idempotent的,因为多次使用产生了副作用了嘛;如果后一个请求把第一个请求覆盖掉了,那这个服务就是idempotent的。前一种情况,应该使用POST方法,后一种情况,应该使用PUT方法。

5.get与post请求的区别,post的安全性体现在那里,是否可以发现他的请求内容
1.GET和POST本质上都是TCP链接,所以它们本质上并没有区别
2.GET和POST有一个重大区别:GET产生一个TCP数据包;POST产生两个TCP数据包。但并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
3.GET和POST的最直观区别是:GET把参数包含在URL中,POST通过request body传递参数。

6.GET和POST表面上的区别:
① get是从服务器上获取数据,post是向服务器传送数据。
get 和 post只是一种传递数据的方式,get也可以把数据传到服务器,他们的本质都是发送请求和接收结果。只是组织格式和数据量上面有差别
② get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
③ 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
④ get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 post基本没有限制。
⑤ get安全性非常低,post安全性较高。 因为参数直接暴露在URL上,所以不建议使用get请求来传递敏感信息。
⑥ GET在浏览器回退时是无害的,而POST会再次提交请求。
⑦GET请求只能进行url编码,而POST支持多种编码方式。
⑧ GET请求会被浏览器主动缓存,而POST不会,除非手动设置。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留
⑨ GET请求在URL中传送的参数是有长度限制的,而POST没有。对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

7.Post为什么安全
我认为post,更安全一些,因为get传输方式将在URL中显示参数,更容易引发一些“不怀好意”人的兴趣,例如上边出现了username和userpwd等特殊字符时,更容易给他们一些兴趣。虽然可以编码,当是也是可以解码的。而post则对方看不见,即使一些高手截获这些信息,也需要它筛选还有解码,相对来说比get方法更加安全。当然是没有绝对的安全的。

HTTP协议中提到GET是安全的方法(safe method),其意思是说GET方法不会改变服务器端数据,所以不会产生副作用。如果是该用POST的地方用了GET,又说GET不安全,那GET也太冤枉了。也就是说,只要我们正确选择使用GET和POST,那么GET是安全的。

其实没啥安全不安全的,如果针对前端安全 xss csrf等来讲,post确实比前者安全。如果从tcp协议上来讲,http都是明文,都裸着的

HTTP请求方式和幂等性相关推荐

  1. 计算机网络之 HTTP请求方式

    文章目录 计算机网络之 HTTP请求方式 1.HTTP常用请求方式 2.GET请求和POST请求的区别 计算机网络之 HTTP请求方式 1.HTTP常用请求方式 方法 作用 GET 获取资源,对服务器 ...

  2. unity3d 切换网络_Unity3d新网络请求方式UnityWebRequest详解

    Unity将要逐步放弃www网络请求api,新的api请求方式来临:UnityWebRequestThe,也正是本篇文章要给大家介绍的重点,那就是UnityWebRequestThe的使用详解. 旧的 ...

  3. android 请求方式有哪些,Android中的几种网络请求方式详解

    Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面整理四种常用网络请求方式. java.net包中的HttpURLConnection类 Get方式: // Get方式请求 ...

  4. php 请求方式,PHP发起HTTP请求有哪几种方式?

    PHP发起HTTP请求方式有:1.通过[file_get_contents]发送get请求:2.通过[CURL]发送get请求:3.通过[fsocket]发送get请求. PHP发起HTTP请求方式有 ...

  5. 轻松搞定Retrofit不同网络请求方式的请求参数配置,及常用注解使用

    <一>四种请求方式: GET 向服务器发起数据请求,获取信息.类似于数据库的select操作,只是查询,不会影响资源的内容. POST 向服务器发送数据,该请求会改变数据的种类等资源.类似 ...

  6. 以ajax请求方式进行文件下载操作失败的原因及解决方案

    以ajax请求方式进行文件下载操作失败的原因及解决方案 参考文章: (1)以ajax请求方式进行文件下载操作失败的原因及解决方案 (2)https://www.cnblogs.com/sjshare/ ...

  7. SpringCloud中Feign服务调用请求方式及参数总结

    前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...

  8. jQuery中ajax的4种常用请求方式

    jQuery中ajax的4种常用请求方式:1.$.ajax()返回其创建的 XMLHttpRequest 对象. $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信 ...

  9. SpringMVC总结三:请求Controller返回视图类型以及请求方式、参数介绍

    视图解析,请求Controller返回的视图类型: @Controller @RequestMapping("/test") public class TestController ...

  10. 超简单-用协程简化你的网络请求吧,兼容你的老项目和旧的网络请求方式

    前言 在Kotlin协程(后简称协程)出来之后,颠覆了我们很多工具类的封装方式,大大简化了我们很多api的调用,并且使异步操作逻辑更清晰了 其中一个很标志性的地方就属网络请求了,以前的网络请求方式声明 ...

最新文章

  1. RetinaFace Mxnet转TensorRT
  2. 计算机视觉与深度学习 | 基于控制点的投影畸变图像配准(matlab源码)
  3. 感知器及其在python中的实现_感知器及其在Python中的实现
  4. 【英语学习】【WOTD】grift 释义/词源/示例
  5. Oracle 加快 Java 迭代速度,功能性版本只维护六个月
  6. 使用Cobbler安装多版本操作系统
  7. 鱼C论坛_VIP二号光盘
  8. 计算机科学cs50_世界顶尖CS大学提供500门免费计算机科学课程
  9. 百度云盘批量转存工具使用教程
  10. Tomcat中文乱码问题【已亲测可用】
  11. 建立统分结合、职责明确的疾控可持续发展信息化体系
  12. TDSQL TCA 分布式实例特点初探--分布表和SQL透传
  13. 【vn.py】SpreadTrading价差交易
  14. 整理研究方向(1)【未完成】
  15. CSS3实现对话气泡效果
  16. SpringBoot和Mybatis-Plus
  17. 新美大 java待遇_入我新美大的Java后台开发面试题总结
  18. w锋ndows用户组设置,第2章Wndows+Server+2008本地用户和组.ppt
  19. python简单图形输出_基于 Python Matplotlib 模块的高质量图形输出
  20. 科学家风采 | 2022 ACM杰出会员揭榜:本刊编委陈恩红教授入选!

热门文章

  1. 原生js发送ajax请求
  2. MPC的终结——二次规划求解约束极值问题
  3. keil c语言怎么写程序,用keil软件如何编写单片机程序?
  4. 黑群晖docker清理缓存_群晖Docker半洗白 不关机快速修改sn/mac方法
  5. python实现图片拼接长图_用Python实现长截图拼接
  6. 使用yarn创建react项目报node_modules\core-js-pure: Command failed错误
  7. Python库pygame下载教程
  8. Unity零基础到入门 ☀️| Unity常用知识点介绍,游戏组成+游戏对象+地形+坐标系等等(必备知识)
  9. 利用PPT要怎样制作文字弹幕特效
  10. 阿里矢量库的图标使用教程(在线,下载)