zoukankan      html  css  js  c++  java
  • HTTP请求方法 GET POST【总结】

    HTTP 8种请求方法概述

    HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),分别为:get,post,put, options,head,delete,trace,connect,来表明对Request-URI指定的资源的不同操作方式,具体介绍如下:
    1. OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送’*’的请求来测试服务器的功能性。
    2. HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息
    3. GET:【查】向特定的资源发出请求。
    4. POST:【改】向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
    5. PUT:【增】向指定资源位置上传其最新内容如果URI不存在,则要求服务器根据请求创建资源;如果存在,服务器就接受请求内容,并修改URI的原始版本。
    6. DELETE:【删】请求服务器删除Request-URI所标识的资源。
    7. TRACE:回显服务器收到的请求,主要用于测试或诊断。
    8. CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。把请求连接转换到透明的 TCP/IP 通道。

    上述方法中最基本的方法有4种,分别是GET,POST,PUT,DELETE。URI用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的【查,改,增,删】4个操作。
    不过,我们在实际应用中常用的只有get和post,其他请求方式都可以通过这两种方式间接的来实现

    Get请求和post请求

    get请求
    • 一般来讲get请求是用来获取信息的,它只会获取资源,并不会对资源进行更改,不会影响资源的状态
    • get请求一般是以查询字符串的形式附在URL里。如果数据是英文字母/数字,原样发送;如果是空格,转换为+;如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。因此,存在一定的安全隐患
    • get提交的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。比如IE对URL长度的限制是2083字节(2K+35)。这一点相信很多人都一直以为是2k的限制,其实并不是啊。

    post请求
    • 根据HTTP规范,POST请求是可能会修改服务器上的资源的请求
    • Post是将表单中的数据放在form的数据体中,表单中的参数值对是通过request body发送给服务器,Post的所有操作对用户来说都是不可见的。
    • 理论上POST没有限制,可传较大量的数据

    面试题:Get请求和post请求的区别

    Get请求和post请求的区别
    • 根本的区别:GET是用于获取数据,不会对数据进行更改;而POST是用于修改数据的,会对数据进行更改
    • GET使用URL传参,数据放在URL里面,在浏览器中是可见的,非常不安全;而POST是将数据放在请求体,用户不可见,相对比较安全。
    • GET传递的数据是放在URL里面的,虽然HTTP协议规范中没有对URL长度进行限制,但是由于浏览器及服务器的限制,所以GET的URL会有长度上的限制,而POST可发送的数据没有长度限制。

    W3school上总结的一个表

    GETPOST
    后退按钮/刷新无害数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
    书签可收藏为书签不可收藏为书签
    缓存能被缓存不能缓存
    编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
    历史参数保留在浏览器历史中。参数不会保存在浏览器历史中。
    对数据长度的限制是的。当发送数据时,GET方法向URL添加数据;URL的最大长度是 2K 个字符。无限制。
    对数据类型的限制只允许 ASCII 字符。没有限制。也允许二进制数据。
    安全性

    与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。

    在发送密码或其他敏感信息时绝不要使用 GET !

    POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
    可见性数据在 URL 中对所有人都是可见的。数据不会显示在 URL 中。
    2017-10-15




  • 相关阅读:
    A/B-test
    LDA概率主题模型
    减肥经验帖
    wide and deep
    利用责任链模式设计一个拦截器
    分享几个 SpringBoot 实用的小技巧
    「造个轮子」——cicada 设计一个配置模块
    「造个轮子」——cicada 源码分析
    「造个轮子」——cicada(轻量级 WEB 框架)
    强如 Disruptor 也发生内存溢出?
  • 原文地址:https://www.cnblogs.com/baiqiantao/p/7672471.html
Copyright © 2011-2022 走看看