zoukankan      html  css  js  c++  java
  • GET和POST区别

    GET请求
    就是向服务器取得(GET)指定的资源。在发出GET请求的时候,必须一并告诉服务器所请求资源的url,以及一些标头(header)信息,例。


    GET将表单中数据的按照variable=value的形式,添加到action(服务)所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接。可以在浏览器的地址栏看见请求的参数信息。
    GET请求可以发送的请求参数长度有限,对于太大量的数据并不适合用GET方式请求,这时可以改用POST

    POST请求
    就是在请求时发布(POST)信息给服务器,对于大量或复杂的信息发布(如文件上传),基本上会采用POST。例


    POST是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。由于信息体的内容长度不受限制,所以大量数据的发送使用POST;
    而由于请求参数移至消息体,地址栏上不会出现请求参数,对于一些敏感信息,如密码,即使长度不长,也会用POST请求。

    如何选用POST和GET
    1. GET请求跟随在url后面的请求参数长度有限;过长的请求参数,或文件上传等大量数据,应改用POST

    2. GET请求参数会出现在地址栏,敏感性或有安全性考虑的参数(如信用卡卡号,用户名、密码等),应改用POST

    3. POST请求的请求参数不会出现在地址栏上,所以无法加入浏览器的书签之中,如果有些页面是根据请求参数来作不同的画面呈现,而你希望可以让用户设定书签,以便日后可以直接点击书签浏览,则应该使用GET请求

    4. 有些浏览器会依网址来缓存数据,如果网址是相同的URL,则会直接从浏览器缓存中取出数据,而不会真正发送请求到服务器上查询最新的数据。如果不希望服务器状态改变了,而浏览器仍从缓存中取得旧的资料,则可以改用POST请求(使用GET请求也可以避免缓存,例如在网址上附加时间戳,让每次GET请求的网址都不相同

    另外,还有另一个非功能面上的考虑,其实也是HTTP当初在设计时区分GET与POST的目的之一,就是按请求是否为等幂(idempotent)操作来决定使用GET或POST。所谓是否为等幂操作,就是请求的操作是否改变服务器状态,同一个操作重复多次,是否传回同样的结果。

    1. GET请求应该用于等幂操作。GET请求纯粹取得资源,而不改变服务器上的数据或状态。GET的请求参数,只是用来告知服务器,必须进一步根据请求参数(而不是URL)来标识出要响应的内容,同样的GET请求且使用相同的请求参数重复发送多次,都应该返回相同的结果。

    2. POST请求应该用于非等幂操作。POST请求发送的数据,可能会影响服务器上的数据或状态,例如修改(增、删、改)数据库的内容,或是在服务器上保存文件。若请求会改变服务器的状态,则应该改用POST请求。

    即GET从服务器获取数据;POST向服务器上传数据。

    参考:《JSP&Servlet学习笔记》(第二版)

  • 相关阅读:
    一个docker容器中运行多个服务还是弄一堆docker容器运行?
    golang配置 GoGetProxyConfig,goproxy.io的介绍
    Docker下运行Mysql报错 mbind: Operation not permitted
    linux允许root用户远程登录
    docker-compose 安装 mysql并初始化用户与sql文件
    spring报错 xxxxxxxxxxxx has been injected into other beans
    mysql报错[Warning] IP address 'xxxx' could not be resolved: Name or service not known错误解决
    idea 高效找出全部未被使用的代码
    springboot配置Filter的两种方法
    .net core Elasticsearch 查询更新
  • 原文地址:https://www.cnblogs.com/zeroingToOne/p/8990888.html
Copyright © 2011-2022 走看看