ajax put请求_Http网络请求方法

ade69703323c15c64a815a7802f0f2f5.png

在介绍HTTP 请求方法之前,先来谈一下幂等性,那什么是幂等性呢。

幂等性:指的是同样的请求不管执行多少次,效果都是一样,服务器状态也是一样的。具有幂等性的请求方法没有副作用。(统计用途除外)

Http的请求方法代表了客户端想对服务器进行的操作,比如:POST、GET、HEAD、PUT、DELETE、TRACE、OPTIONS。 常用的不过于CRUD四个。增:PUT;删:DELETE;改: POST;查: GET。

GET 与 POST

GET

  • 向服务器请求数据,获取资源,在大部分网络请求中,GET方法非常常见,并且它具有幂等性。
  • GET请求没有请求体,对于GET请求的请求参数在URL后面加上一个"?"的后面,参数以key=value的形式。参数与参数之间使用"&"进行连接。
  • GET请求是通过URL传输参数的,所以GET请求可以传输的参数是有限的。

POST

  • 用于向表单提交数据,传送的数据放在请求体中。
  • 在POST请求中,请求参数放在请求体中,服务器会根据POST请求体中的参数创建一个页面,然后返回给客户端。POST不具有幂等性。

POST 与 GET 区别

  1. 作用不同:GET 用于获取资源,而 POST 用于传输实体主体。
  2. 参数位置不一样:GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在实体主体中。但是并不是 POST 参数存储在实体主体中就认为它的安全性更高,我们可以通过一些抓包工具如(Fiddler)查看。
    在URL 只支持 ASCII 码,因此 GET 的参数中如果存在中文等字符就需要先进行编码。例如 中文 会转换为 %E4%B8%AD%E6%96%87,而空格会转换为 %20。POST 支持标准字符集。
  3. 安全性:安全的 HTTP 方法不会改变服务器状态,也就是说它只是可读的。 GET 方法是安全的,而 POST 却不是,因为 POST 的目的是传送实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也就发生了改变。
  • 安全的方法除了 GET 之外还有:HEAD、OPTIONS。
  • 不安全的方法除了 POST 之外还有 PUT、DELETE。
  1. 幂等性:GET是幂等性,而POST不是幂等性。在正确实现的条件下,GET,HEAD,PUT,OPTIONS 和 DELETE 等方法都是幂等的,而 POST 方法不是。 GET /pageX HTTP/1.1 是幂等的,连续调用多次,客户端接收到的结果都是一样的: GET /pageX HTTP/1.1 GET /pageX HTTP/1.1 GET /pageX HTTP/1.1 GET /pageX HTTP/1.1
POST /add_row HTTP/1.1 不是幂等的,如果调用多次,就会增加多行记录: POST /add_row HTTP/1.1 -> Adds a 1nd row POST /add_row HTTP/1.1 -> Adds a 2nd row POST /add_row HTTP/1.1 -> Adds a 3rd row
DELETE /idX/delete HTTP/1.1 是幂等的,即便不同的请求接收到的状态码不一样: DELETE /idX/delete HTTP/1.1 -> Returns 200 if idX exists DELETE /idX/delete HTTP/1.1 -> Returns 404 as it just got deleted DELETE /idX/delete HTTP/1.1 -> Returns 404
  1. 可缓存性:GET可以缓存,但是POST大部分情况下无法缓存。 如果要对响应进行缓存,需要满足几个条件:
  • 请求报文的 HTTP 方法本身是可缓存的,包括 GET 和 HEAD,但是 PUT 和 DELETE 不可缓存,POST 在多数情况下不可缓存的。
  • 响应报文的状态码是可缓存的,包括:200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501。
  • 响应报文的 Cache-Control 首部字段没有指定不进行缓存。
  1. 在使用 XMLHttpRequest 的 POST 方法时,浏览器会先发送 Header 再发送 Data。但并不是所有浏览器会这么做,例如火狐就不会。而 GET 方法 Header 和 Data 会一起发送。
    XMLHttpRequest 简介:XMLHttpRequest 是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户,局部刷新避免资源浪费。并且XMLHttpRequest 在 AJAX 中被大量使用。

HEAD

获取报文首部,并且具有幂等性。HEAD请求与GET请求一样,没有请求体。但是与GET区别在于,当使用HEAD进行请求服务器时,服务器只返回响应头,不返回响应体。 常用于: - 检查请求的URL是否有效,可以通过响应码进行判断 - 可以根据返回的响应头进行判断资源是否被篡改

PUT

用来向服务器上传文件,并且具有幂等性。与POST区别在于:POST用于向服务器发送数据,而PUT用于向服务器储存数据。 它自身不带验证机制,导致任何人都可以上传文件,有很大的安全问题,一般不使用该方法。 当使用PUT进行请求时,服务器会使用PUT的请求体的数据创建一个由它请求的URL命名的新文件。没有进行特殊说明,一般PUT请求的请求体只用于创建或修改该资源上。如果请求的URL在服务器中不存在,则根据该请求的主体部分创建一个由该请求URL命名的新文档;如果该URL在服务器中已经存在,则用该主体替代他。

DELETE

用于删除服务器上的文件,并且具有幂等性。但是服务器并不是真正的删除文件,而是给需要删除的文件做一个标记,与PUT功能相反。它也没有验证机制,有很大的安全问题。

PATCH

对资源进行部分修改。与PUT区别在于,PUT是修改所有资源,替代它,而PATCH只是修改部分资源。

OPTIONS

具有幂等性。当客户端不清楚对资源操作的方法,可以使用这个请求询问服务器该资源支持的请求方法,在响应字段allow中返回,比如:Allow: GET, POST, HEAD。它只可以在HTTP 1.1中使用。

TRACE

用来查看一个请求,经过网关,代理到达服务器,最后请求的变换。显示出请求到响应的传输路径。不过有安全漏洞,会泄漏网站信息,被服务器禁止使用。仅在HTTP 1.1版本可以使用。

CONNECT

要求客户端与另一个远程服务器建立一个特殊的隧道,这时候web服务器充当代理角色。仅在HTTP 1.1版本可以使用。 使用SSL(Secure Sockets Layer,安全套接层)TLS(Transport Layer Security,传输层安全)协议在网络隧道中进行加密传输。在介绍HTTP 请求方法之前,先来谈一下幂等性,那什么是幂等性呢。

幂等性:指的是同样的请求不管执行多少次,效果都是一样,服务器状态也是一样的。具有幂等性的请求方法没有副作用。(统计用途除外)

Http的请求方法代表了客户端想对服务器进行的操作,比如:POST、GET、HEAD、PUT、DELETE、TRACE、OPTIONS。 常用的不过于CRUD四个。增:PUT;删:DELETE;改: POST;查: GET。

GET 与 POST

GET

  • 向服务器请求数据,获取资源,在大部分网络请求中,GET方法非常常见,并且它具有幂等性。
  • GET请求没有请求体,对于GET请求的请求参数在URL后面加上一个"?"的后面,参数以key=value的形式。参数与参数之间使用"&"进行连接。
  • GET请求是通过URL传输参数的,所以GET请求可以传输的参数是有限的。

POST

  • 用于向表单提交数据,传送的数据放在请求体中。
  • 在POST请求中,请求参数放在请求体中,服务器会根据POST请求体中的参数创建一个页面,然后返回给客户端。POST不具有幂等性。

POST 与 GET 区别

  1. 作用不同:GET 用于获取资源,而 POST 用于传输实体主体。
  2. 参数位置不一样:GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在实体主体中。但是并不是 POST 参数存储在实体主体中就认为它的安全性更高,我们可以通过一些抓包工具如(Fiddler)查看。
    在URL 只支持 ASCII 码,因此 GET 的参数中如果存在中文等字符就需要先进行编码。例如 中文 会转换为 %E4%B8%AD%E6%96%87,而空格会转换为 %20。POST 支持标准字符集。
  3. 安全性:安全的 HTTP 方法不会改变服务器状态,也就是说它只是可读的。 GET 方法是安全的,而 POST 却不是,因为 POST 的目的是传送实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也就发生了改变。
  • 安全的方法除了 GET 之外还有:HEAD、OPTIONS。
  • 不安全的方法除了 POST 之外还有 PUT、DELETE。
  1. 幂等性:GET是幂等性,而POST不是幂等性。在正确实现的条件下,GET,HEAD,PUT,OPTIONS 和 DELETE 等方法都是幂等的,而 POST 方法不是。 GET /pageX HTTP/1.1 是幂等的,连续调用多次,客户端接收到的结果都是一样的: GET /pageX HTTP/1.1 GET /pageX HTTP/1.1 GET /pageX HTTP/1.1 GET /pageX HTTP/1.1
POST /add_row HTTP/1.1 不是幂等的,如果调用多次,就会增加多行记录: POST /add_row HTTP/1.1 -> Adds a 1nd row POST /add_row HTTP/1.1 -> Adds a 2nd row POST /add_row HTTP/1.1 -> Adds a 3rd row
DELETE /idX/delete HTTP/1.1 是幂等的,即便不同的请求接收到的状态码不一样: DELETE /idX/delete HTTP/1.1 -> Returns 200 if idX exists DELETE /idX/delete HTTP/1.1 -> Returns 404 as it just got deleted DELETE /idX/delete HTTP/1.1 -> Returns 404
  1. 可缓存性:GET可以缓存,但是POST大部分情况下无法缓存。 如果要对响应进行缓存,需要满足几个条件:
  • 请求报文的 HTTP 方法本身是可缓存的,包括 GET 和 HEAD,但是 PUT 和 DELETE 不可缓存,POST 在多数情况下不可缓存的。
  • 响应报文的状态码是可缓存的,包括:200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501。
  • 响应报文的 Cache-Control 首部字段没有指定不进行缓存。
  1. 在使用 XMLHttpRequest 的 POST 方法时,浏览器会先发送 Header 再发送 Data。但并不是所有浏览器会这么做,例如火狐就不会。而 GET 方法 Header 和 Data 会一起发送。
    XMLHttpRequest 简介:XMLHttpRequest 是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户,局部刷新避免资源浪费。并且XMLHttpRequest 在 AJAX 中被大量使用。

HEAD

获取报文首部,并且具有幂等性。HEAD请求与GET请求一样,没有请求体。但是与GET区别在于,当使用HEAD进行请求服务器时,服务器只返回响应头,不返回响应体。 常用于: - 检查请求的URL是否有效,可以通过响应码进行判断 - 可以根据返回的响应头进行判断资源是否被篡改

PUT

用来向服务器上传文件,并且具有幂等性。与POST区别在于:POST用于向服务器发送数据,而PUT用于向服务器储存数据。 它自身不带验证机制,导致任何人都可以上传文件,有很大的安全问题,一般不使用该方法。 当使用PUT进行请求时,服务器会使用PUT的请求体的数据创建一个由它请求的URL命名的新文件。没有进行特殊说明,一般PUT请求的请求体只用于创建或修改该资源上。如果请求的URL在服务器中不存在,则根据该请求的主体部分创建一个由该请求URL命名的新文档;如果该URL在服务器中已经存在,则用该主体替代他。

DELETE

用于删除服务器上的文件,并且具有幂等性。但是服务器并不是真正的删除文件,而是给需要删除的文件做一个标记,与PUT功能相反。它也没有验证机制,有很大的安全问题。

PATCH

对资源进行部分修改。与PUT区别在于,PUT是修改所有资源,替代它,而PATCH只是修改部分资源。

OPTIONS

具有幂等性。当客户端不清楚对资源操作的方法,可以使用这个请求询问服务器该资源支持的请求方法,在响应字段allow中返回,比如:Allow: GET, POST, HEAD。它只可以在HTTP 1.1中使用。

TRACE

用来查看一个请求,经过网关,代理到达服务器,最后请求的变换。显示出请求到响应的传输路径。不过有安全漏洞,会泄漏网站信息,被服务器禁止使用。仅在HTTP 1.1版本可以使用。

CONNECT

要求客户端与另一个远程服务器建立一个特殊的隧道,这时候web服务器充当代理角色。仅在HTTP 1.1版本可以使用。 使用SSL(Secure Sockets Layer,安全套接层)TLS(Transport Layer Security,传输层安全)协议在网络隧道中进行加密传输。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值