精华内容
下载资源
问答
  • Get和Post区别用法

    千次阅读 2020-10-24 23:21:08
    请注意,查询字符串(名称/值对)是在GET请求的URL中发送的: /test/demo_form.php?name1=value1&name2=value2 GET请求可以被缓存 GET请求保留在浏览器历史记录中 GET请求可以加书签 处理敏感数据时,...

    突如其来的视频面试让我措手不及,努力在脑海中搜寻尘封的知识却一无所获,所以复习后将它记录下来,希望能够帮助到阅读这篇博客的你们。

    首先是大家最熟悉的,也就是W3School给出的“答案”:

    GET

    请注意,查询字符串(名称/值对)是在GET请求的URL中发送的:

    /test/demo_form.php?name1=value1&name2=value2

    • GET请求可以被缓存
    • GET请求保留在浏览器历史记录中
    • GET请求可以加书签
    • 处理敏感数据时,切勿使用GET请求
    • GET请求有长度限制
    • GET请求仅用于请求数据(不修改)

    POST

    POST用于将数据发送到服务器以创建/更新资源。

    通过POST发送到服务器的数据存储在HTTP请求的请求主体中

    POST /test/demo_form.php HTTP/1.1
    Host: w3schools.com
    name1=value1&name2=value2

    • POST请求永远不会被缓存
    • POST请求不会保留在浏览器历史记录中
    • POST请求无法添加书签
    • POST请求对数据长度没有限制

    这份来自W3School的标准答案,详细阐述了二者的区别,但是这还不够。

    首先我们需要学习一个术语,叫做“幂等(idempotent)”,如果我们说一个HTTP方法是幂等的,意思是同样的请求被执行一次与连续执行多次的效果是一样的,换句话说,幂等方法不应该具有副作用。在正确实现的条件下GET,HEAD,PUT,DELETE等方法都是幂等的,而POST方法不是。所有的safe方法也都是幂等的。

    幂等性只与后端服务器的实际状态有关,而每一次请求接收到的状态码不一定相同。例如,第一次调用DELETE方法有可能返回200,但是后续的请求可能会返回404,DELETE的言外之意是,开发者不应该使用DELETE方法实现具有删除最后条目功能的 RESTful API。


    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
    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


    所以并不是POST和GET哪个更安全的问题,它们的用处就是不同的:

    GET用于查看某些内容而不进行更改,或者说用于检索远程数据,请求指定的资源

    POST用于更改某些内容,即提交处理数据给标识的资源

    例如,搜索页面应使用GET,而更改密码的表单应使用POST。


    在HTTP/1.1规范(RFC 2616)第15节安全注意事项(Security Considerations)中解释了为什么只应使用GET来检索数据:

    Authors of services which use the HTTP protocol SHOULD NOT use GET based forms for the submission of sensitive data, because this will cause this data to be encoded in the Request-URI. Many existing servers, proxies, and user agents will log the request URI in someplace where it might be visible to third parties. Servers can use POST-based form submission instead

     大致意思如下:使用HTTP协议的作者不应使用GET提交敏感数据,因为这将导致数据被编码在请求URI中。许多现有的服务器、代理、和用户代理将在第三方的一些地方可以看到。服务器可以改用基于POST的表单提交。


    在PHP中,二者的概念有些混乱。POST请求从查询字符串以及通过请求正文获取输入。 GET请求仅从查询字符串获取输入。因此,我们可以说POST请求是GET请求的超集。您可以在POST请求中使用$ _GET,甚至在$ _POST和$ _GET中使用具有相同名称的参数甚至意味着不同的含义,甚至可能是有意义的。

    例如,假设您有一个用于编辑文章的表单,标题ID可能在查询字符串中,使用$ _GET ['id']获得,但是假设您要更改标题ID。新的ID会出现在请求正文中:$_POST['id']。


    最后还有非常重要的一点,在将GET方法应用于AJAX请求时,一些浏览器会缓存请求的结果,尤其是IE浏览器。因此,如果您使用相同的GET请求进行轮询,则即使要查询的数据在服务器端更新了,也将始终返回相同的结果。缓解此问题的一种方法是,通过附加时间戳使每个请求的URL唯一。

    我们可以使用如下代码进行实现:

    var timestamp = new Date().getTime();
    url = url + '?t=' + timestamp;

    在我的毕业设计中就被这个问题所困扰,但我并没有意识到这是由于GET方法的幂等特性造成的,通过这次复习,我学会了遗忘的知识,也获得了新的知识。


    这篇博文更像是一篇笔记了,结构有点乱,比较随心所欲,希望能够帮助到阅读到这篇博文的你,如果你喜欢这篇博文,还请给个赞或者一键三连,谢谢支持!

     

     

     

    参考目录:

    StackOverflow:What is the difference between POST and GET? [duplicate]

    StackOverflow:When should I use GET or POST method? What's the difference between them?

    W3C:Protocol -- HTTP/1.1 RFC 2616:15 Security Considerations

    W3School:HTTP Request Methods

    php.net:$_POST

    展开全文
  • 主要介绍了从零开始学习Node.js系列教程一:http get和post用法,结合具体实例形式分析了nodejs中get与post请求的使用方法与相关注意事项,需要的朋友可以参考下
  • flask 中get和post用法

    千次阅读 2018-07-05 15:48:19
    get和post 1、get请求: 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求 传参:get请求传参是放在url中,并且是通过?的形式来指定keyvalue的 2、post请求: 使用场景...
    get和post
    1、get请求:
            使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求
            传参:get请求传参是放在url中,并且是通过?的形式来指定key和value的
    2、post请求:
            使用场景:如果要对服务器产生影响,那么使用post请求
            传参:post请求传参不是放在URL中,是通过form data 的形式发送给服务器的
    get 其他年轻是通过flask.request.args来获取
    post请求是通过flask.request.form来获取
    post请求在模板中要注意几点:
    *input 标签中,要写name来表示这个value的key,方便后台获取
    *在写form表单的时候,要指定method=‘post’,并且要指定action='/login/'  
    
    
    1、get实例:
    模板文件index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>首页</title>
    </head>
    <body>
    <!--一旦点击连接就会访问视图函数search,通过视图函数来反转URL,URL的参数是q,值为hello:就会返回url:http://127.0.0.1:5000/search/?q=hello-->
        <a href="{{ url_for('search',q='hello') }}">跳转到搜索页面</a>
    </body>
    

    </html>

    get_demo.py文件:

    #encoding:utf-8
    from flask import Flask,render_template,request
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def index(): #一访问127.0.0.1:5000就会返回index模板中的链接”跳转到搜索页面”
        return render_template('index.html')
    @app.route('/search/')
    def search():
        #arguments
        print request.args #获取所有参数
        print request.args.get('q') #或者参数为q的值
        return 'search'
    
    @app.route('/login/',methods=['GET','POST'])
    def login():
        if request.method == 'GET': #如果请求方法时GET,返回login.html模板页面
            return render_template('login.html')
        else:
            username = request.form.get('username')
            password = request.form.get('password')
    
    
    if __name__ == '__main__':
        app.run()
    
    2、post实例


    login.html模板文件:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>首页</title>
    </head>
    <body>
        <form action="{{ url_for('login') }}" method="post">
            <table>
                <tbody>
                    <tr>
                        <td>用户名:</td>
                        <td><input type="text" placeholder="请输入用户名" name="username"></td>
                    </tr>
                    <tr>
                        <td>密码:</td>
                        <td><input type="text" placeholder="请输入密码" name="password"></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td><input type="submit" value="登陆"></td>
                    </tr>
                </tbody>
    
            </table>
    
        </form>
    </body>
    </html>
    get_post_demo.py文件
    #encoding:utf-8
    from flask import Flask,render_template,request
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def index(): #一访问127.0.0.1:5000就会返回index模板中的链接”跳转到搜索页面”
        return render_template('index.html')
    @app.route('/search/')
    def search():
        #arguments
        print request.args #获取所有参数
        print request.args.get('q') #或者参数为q的值
        return 'search'
    
    @app.route('/login/',methods=['GET','POST'])  #指定访问页面的方法
    def login():
        if request.method == 'GET': #如果请求方法时GET,返回login.html模板页面
            return render_template('login.html')
        else:
            username = request.form.get('username')
            password = request.form.get('password')
            return 'post request'
    
    if __name__ == '__main__':
        app.run()
    
    
    
    

    展开全文
  • GetPost请求区别和使用场景

    千次阅读 多人点赞 2019-04-12 10:45:28
    Get请求和Post请求区别: (1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中) (2)post发送的数据更大(get有url长度限制) (3)post能发送更多的数据类型(get只...

    GET和POST是什么?

    答:HTTP协议中的两种发送请求的方法。

    HTTP是什么?

    答:HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

    Get请求和Post请求区别:

    (1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
    (2)post发送的数据更大(get有url长度限制)
    (3)post能发送更多的数据类型(get只能发送ASCII字符)
    (4)post比get慢
    (5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据.

    总结:GET把参数包含在URL中,POST通过request body传递参数,所以Post更加安全一些;Get的效率比Post高一些,但是Get请求发送的参数是有限的,而Post请求是没有限制的(理论上来讲)。

    使用场景:

    1. 在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
    2. Get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;

    区别表现如下:

    1. Get是从服务器上获取数据,Post是向服务器传送数据。
    2. Get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。Post是通过HTTP Post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
    3. 对于Get方式,服务器端用Request.QueryString获取变量的值,对于Post方式,服务器端用Request.Form获取提交的数据。
    4. Get传送的数据量较小,不能大于2KB。Post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 5. Get安全性非常低,Post安全性较高。但是执行效率却比Post方法好。 

    Get和Post还有一个重大区别:

    Get产生一个TCP数据包;Post产生两个TCP数据包。

    对于Get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据),而对于Post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

    比如说:Get只需要汽车跑一趟就把货送到了,而Post得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。由于Post需要两步,时间上消耗的要多一点,所以Get比Post更有效率。

     

     

    展开全文
  • GETPOST用法

    2012-05-25 21:51:28
    本文介绍用GETPOST命令提取网页信息的方法,主要用于提取部分关键信息,用于核对。
  • get post请求的区别

    万次阅读 2019-05-23 16:49:08
    在了解get post请求的区别之前,我们首先要知道什么是get请求和post请求。 get和post是什么 get post请求是http协议中的两种请求方式,get一般用来获取服务器的信息的,post一般是用来更新信息的,当然,http...

    在了解get 和 post请求的区别之前,我们首先要知道什么是get请求和post请求。

    get和post是什么

    get 和 post请求是http协议中的两种请求方式,get一般用来获取服务器的信息的,post一般是用来更新信息的,当然,http协议中还有其他协议,比如put、delete等。

    两者的区别

    1. get请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
      post请求是把请求的数据放在请求体中。
      但是这种做法也不时绝对的,大部分人的做法也是按照上面的说法来的,但是也可以在get请求加上 request body,给 post请求带上 URL 参数。
    2.  get请求提交的url中的数据最多只能是1024字节,这个限制是浏览器或者服务器给添加的,http协议并没有对url长度进行限制,目的是为了保证服务器和浏览器能够正常运行,防止有人恶意发送请求。
      post请求则没有大小限制。。
    3. post请求相对于get请求更安全。因为get请求传递的参数会显示在url中,用户在访问的时候浏览器会缓存网页,这样别人在查看浏览器浏览记录的时候会获取私人信息,post请求不会被用户看到,所以安全性高。
    4. get方式需要使用Request.QueryString来取得变量的值,而post方式通过Request.Form来获取变量的值。
      Request.QueryString用法:
       如<a href=”4-1.asp?name=白芸&age=22”>
       就可以用request.querystring(“name”)来获得上面链接传来的参数值.
       例:a1=request.querystring("name")
       a2=request.querystring("age")
       则 a1为"白芸",a2为"22".
      Request.Form用法:
       在CS文件中获得对应页面中的下拉框DropDownList_sitebranch值可以有以下几种方法获得:
       siteInfo.FZJGID = Request.Form["DropDownList_sitebranch"].ToString();

    展开全文
  • 初学Get和Post用法和介绍

    千次阅读 2018-06-22 07:56:45
    1.get是从服务器上获取数据,post是向服务器传送数据, 2.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。 3.get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 4....
  • HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GETPOST,PUT,DELETE。URL全称是资源描述符。我们可以这样认为: 一个URL地址,它用于描述一个网络上的资源,而HTTP中的GETPOST,PUT,DELETE就...
  • get post 区别

    千次阅读 2019-04-25 17:23:57
    二、GETPOST请求过程有些不同: 三、网友仔细分析后不同的理解 四、拓展: 要克服生活的焦虑沮丧,得先学会做自己的主人。 一、基本答案 1. GET把参数包含在URL中,POST通过request body传递参数。 2. GET...
  • get和post是页面提交的两种方式,有着不同的应用。 $_GET变量接受所有以get方式发送的请求,及浏览器地址栏中的?之后的内容。 $_POST变量接受所有以post方式发送的请求,例如,一个form以method=post提交,提交后...
  • 在web中,get和post区别详解

    千次阅读 2020-02-22 17:41:09
    在web中,get和post区别详解 在说get和post区别之前,我们应该先了解一下什么是HTTP。 HTTP 简介 HTTP是一个简单的请求-响应协议,是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是一个基于TCP/IP...
  • python:get和post区别

    千次阅读 2018-10-07 13:20:28
    1.安全程度不同。post更安全,不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器...注:http协议并未规定get和post的长度限制,但浏览器web服务器会对URL的长度有所限制,例如IE,则最大长度为20...
  • 这篇文章主要说一下AFNetWorking的getpost用法以及使用AFNetWorking进行图片上传的问题 首先,是AFNetWorking的get用法:  AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager ...
  • python爬虫 Get Post区别

    千次阅读 2018-11-21 12:23:28
    GET请求 HTTP默认的请求方法就是GET  * 没有请求体  * 数据必须在1K之内!  * GET请求数据会暴露在浏览器的地址栏中 GET请求常用的操作: ... 提交表单时,表单默认使用GET请求,但可以设置为POST...
  • 浅谈HTTP中GetPost区别用法

    千次阅读 2014-05-22 10:36:14
    说完原理性的问题,我们再从表面现像上面看看GET和POST区别   1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL传输数据,参数之间以&相连,如:login.action?name=hyddd&...
  • asp.net页面的提交方式POST和GET有什么区别?1 get是从服务器上获取数据,post是向服务器传送数据。(1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。(2)...
  • 首先,.get和.get和.post其实都是.ajax的一种,在.ajax的一种,在.ajax中有一个type属性,专门用来指定是get请求还是post请求的。如下: $.ajax({ url:”路径”, type:”post/get”, datatype:”json”, //...
  • 也看了别人写的get和post用法,有收获,在这里也写下自己亲自检验的结果,以及在运行时出现的问题。get和post 只是php页面间传递参数中的其中2种用法,还有sessioncookie。 1. 用get传值, $_GET[ ](1)先建2...
  • 关于get和post区别的面试题

    千次阅读 2018-08-01 16:08:26
    get请求在url中传递的参数是有长度限制的,而post没有,则POST的数据则可以非常大。 postget安全,因为数据在地址栏上不可见。getpost更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。 ...
  • httpclient4 发送http请求的get和post用法

    千次阅读 2013-11-11 16:54:09
    //它关联的连接管理器必须调用ClientConnectionManager#shutdown()方法关闭。 public void shutdown() { this.httpclient.getConnectionManager().shutdown(); } public void executeMethod(PostMethod...
  • http GET POST 请求的优缺点、区别以及误区

    万次阅读 多人点赞 2018-05-05 17:23:19
    Get和Post在面试中一般都会问到,一般的区别: (1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中) (2)post发送的数据更大(get有url长度限制) (3)post能发送更...
  • iOS中Http协议get和post主要区别

    千次阅读 2013-05-24 13:12:46
    从表面的意思看get post区别get就是获取数据,post就是发送数据。这个是误区。其实两者都可以的,在IOS向服务器发送请求里面可以带参数。 那么这些误区是怎么出现的呢?先看看一下对http的解释 一般在...
  • Centos 下Curl 常用GET/POST用法

    千次阅读 2019-01-22 11:37:49
    直接GET请求 curl www.baidu.com 注意:当url中有&等特殊字符时,需要将整个url用双引号括起来 三.POST请求 1.有两种方式,第一种是参数方式 curl -d "args" " protocol://address:port/url " 2...
  • RestTemplate接受byte[]get和post用法

    千次阅读 2019-07-01 11:28:02
    RestTemplate 发送post请求 String senMess =""; HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity<String> entity = new HttpEntity<String&...
  • 主要介绍了AJAX使用getpost模式的区别,实例分析了Ajax中getpost的具体用法与使用区别,具有一定参考借鉴价值,需要的朋友可以参考下
  • get和post用法之response解析

    千次阅读 2020-03-15 13:13:14
    response = requests.get('http://www.baidu.com') #获取响应数据 print(response.text) # 会打印出类似乱码的字符串,其实是西欧的字体 #获取编码用的字符集 print(response.encoding) # 会打印出ISO-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 110,263
精华内容 44,105
关键字:

get和post的用法区别