• 3 post和get区别


    getpost的区别

     get :

    https://www.baidu.com/?tn=48021271_7_hao_pg

    post:

    例子如下,有个Form表单。

    <form action="getPostServlet/getPost.do?param4=param4" method="get">

         <input type="hidden" name="param1" value="param1">

         <input type="hidden" name="param2" value="param2">

        <input type="text" name="param3" value="param3" readonly>

        <input type="submit" name="button1" value="submit">

    </form>

    1)method=get时,?后面的参数param4=param4不会被传到服务器,因为浏览器在传送之前,重新拼装URL为http://localhost/mywebapp/getPostServlet/getPost.do?pram1=param1&pram2=param2&pram3=param3&button1=submit,所以?后面的参数就被替换了,因为是get请求,所以浏览器会将form表单中的标签都放到URL中传到服务器,

    服务器端获取参数值是通过Request.QueryString获取变量的值。

    2)如果method=post时,浏览器会将getPostServlet/getPost.do?param4=param4传递到服务器,同时会将form数据集包装在请求的body中传递到服务器。

    服务器获取数据是通过Request.form获取提交的数据。

    3)get和post的区别:

    一、安全性

    因为get会将用户名和密码放在URL中,进而出现在浏览器的历史记录中,显然这种情况应该用post.

    二、编码

    get只能向服务器发送ASCII字符,而post则可以发送ISO 10646中的字符

    get和post对应的enctype属性有区别:

    application/x-www-form-urlencoded

    在发送前编码所有字符(默认)

    multipart/form-data

    不对字符编码。 在使用包含文件上传控件的表单时,必须使用该值。

    text/plain

    空格转换为 "+" 加号,但不对特殊字符编码。

    三、提交数据的长度

    IE将请求的URL长度限制为2083个字符,从而限制了get提交的数据长度,如果URL超出了这个限制,提交form时IE不会有任何反映。

    四、缓存

    由于一个get得到的结果直接对应到一个URL,所以get的结果页面有可能被浏览器缓存,而post一般不能

    五、引用和SEO

     可以用一个URI引用一个get的结果页面,而post的结果则不能,所以必然不能被搜索引擎搜到。

    最本质的区别

    get是用来从服务器上获得数据,而post是用来向服务器上传递数据

    如果采用Post方法,浏览器将会按照下面两步来发送数据。

    首先浏览器将action属性中指定的表单处理服务器建立联系,一旦建立连接之后,浏览器就会按分段传输的方法将数据发送给服务器。

    在服务器端,一旦Post样式的应用程序开始执行时,就应该从一个标志位置读取参数,而一旦读到参数,在应用程序能够使用这些表单值以前,

    必须对这些参数进行解码,用户特定的服务器会明确指定应用程序应该如何接受这些参数。

    采用Get方法:

    浏览器会直接与表单处理服务器建立连接,然后直接在一个传输步骤中发送所有的表单数据,然后直接在一个传输步骤中发送所有的表单数据。

    2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;

    Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

    六、正确的使用get和post

    当且仅当form是幂等的时候,使用get。

    幂等:多次相同的请求产生的副作用,和一次请求的副作用相同。

    如果提交请求纯粹只是从服务器端获取数据而不是进行其他操作,并且多次提交不会有明显的副作用,应该使用get。

    比如:搜索引擎的查询(http://www.google.com/search?q=abc)和分页(user.do?page=1)

    如果提交这个请求会产生其他操作和影响,就应该使用post。

    比如:修改服务器上数据库中的数据;发送一封邮件;删除一个文件等

    另一个要考虑因素是安全性。

    若符合下列任一情况,则用post方法:

    a.请求的结果有持续性的副作用,例如:数据库内添加新的数据行。

    b.若使用get方法,则表单上收集的数据可能让URL过长。

    c.要传送的数据不是采用ASCII编码。

    若符合下列任一情况,则用get方法:

    a.请求是为了查找资源,html表单数据仅用来搜索。

    b.请求结果无持续性的副作用。

    c.收集的数据及html表单内的输入字段名称的总长不超过1024个字符。

    七、浏览器差异

    IE6:URL长度限制为2083个字符;post之后,刷新页面不会自动重新post数据,会出现警告。

    IE7和IE6相同。

    Firefox:刷新页面不会自动重新post数据会出现警告。

    post和get容易忽视的一点差别:

    就是当method为get时,action属性中URL后面的参数是忽视的。

    例如:

    action=insert.jsp?name=tobby method=get,当我们提交之后真正的url中是没有name=tobby的,

    他会根据表单中的内容重新组装成一个url的,假如form中有一个文本框,

    <input type="text" name="address" value="wuhan">,那么url会变成insert.jsp?addresswuhan.

    谷歌浏览器查看POST/GET提交内容

    1. 在谷歌浏览器,右键,检查(360急速浏览器里面名字叫“审查元素”)(即有些人说的开发者工具,用于查看网页代码的工具);

      谷歌浏览器查看POST/GET提交内容
      谷歌浏览器查看POST/GET提交内容
    2.  

      点击"network"(网络),再点击"Preserve log"(访问日志) ,继续点击"XHR"(XHR为获取提交内容)

      点击下图中的4和5,红色按钮和后面挨着的灰色按钮,灰色按钮鼠标移动上去提示clear(清理缓存);

      谷歌浏览器查看POST/GET提交内容
      谷歌浏览器查看POST/GET提交内容
    3.  

      勾选页面内容,并点击提交,提交后得到提交页面信息[http://XXX.com/handler/web/form_runtime/handleSubmit.php],点击页面查看内容;

      谷歌浏览器查看POST/GET提交内容
    4.  

      看下图右侧点开的内容,可以看到提交方式为POST;

      谷歌浏览器查看POST/GET提交内容
    5.  

      拖动右侧滑块看最底下的内容,右侧查看内容的滚动条拖到底部可以看到From date即提交的内容;

      谷歌浏览器查看POST/GET提交内容
    6.  

      我这里得到的为:

      d:

      {"cvs":{"i":200101345,"t":"iuCW78d","s":200218043,"acc":"6fwABKuIhYMZ4DLEdvU4eSsS5e0i6prY","r":"","c":{"cp":{"200928985":[200755731,200755732],"200928987":[200755750,200755755]}}}}

      说明提交内容 d:{} 数组,直接向目标页面传递此数组即可完成提交;

  • 相关阅读:
    属性
    继承
    UniApp 环境安装
    Mysql:The user specified as a definer (‘root‘@‘%‘) does not exist 的解决办法
    SpringBoot Consider defining a bean of type 'xxx' in your configuration
    js 取url各部分数据
    uniapp中使用jsencrypt
    centos8.x版本安装宝塔提示Errors during downloading metadata for repository ‘epel’报错的解决方法
    解决 JWT + SSO 报错 :Error creating bean with name 'jwtTokenServices'
    SQL server 清除缓存
  • 原文地址:https://www.cnblogs.com/chenduzizhong/p/11138369.html
Copyright © 2020-2023  润新知