根据 RFC 规范,GET 的语义是从服务器获取指定的资源,GET 请求的参数位置一般是写在 URL 中,URL 规定只能支持 ASCII,所以 GET 请求的参数只允许 ASCII 字符 ,而且浏览器会对 URL 的长度有限制(HTTP协议本身对 URL长度并没有做任何规定)。

根据 RFC 规范,POST 的语义是根据请求负荷(报文body)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST 请求携带数据的位置一般是写在报文 body 中,body 中的数据可以是任意格式的数据,只要客户端与服务端协商好即可,而且浏览器不会对 body 大小做限制。

安全和幂等的概念: - 在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。 - 所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的。

从 RFC 规范定义来看: - GET 的语义是请求获取指定的资源。GET 方法是安全、幂等、可被缓存的。 - POST 的语义是根据请求负荷(报文主体)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST 不安全,不幂等,(大部分实现)不可缓存。

具体来看,新增删除数据使用 GET 方法,这样 GET 就不是安全幂等的;同理,查询数据使用 POST,那么 POST 是安全幂等的,这需要看开发者自行开发的方法。 这里注意,HTTP 传输的内容都是明文的,虽然在浏览器地址栏看不到 POST 提交的 body 数据,但是只要抓个包就都能看到了。所以,要避免传输过程中数据被窃取,就要使用 HTTPS 协议,这样所有 HTTP 的数据都会被加密传输。

理论上,任何请求都可以带 body 的。所以之前说的 GET 也可以带 body,只是 RFC 规范下 GET 不需要用到 body。

请求方法:GET 与 POST的更多相关文章

  1. HTTP请求方法详解

    HTTP请求方法详解 请求方法:指定了客户端想对指定的资源/服务器作何种操作 下面我们介绍HTTP/1.1中可用的请求方法: [GET:获取资源]     GET方法用来请求已被URI识别的资源.指定 ...

  2. HTTP请求方法

    HTTP请求方法 根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, ...

  3. iOS开发 GET、POST请求方法(NSURLSession篇)

    NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...

  4. iOS开发 GET、POST请求方法(NSURLConnection篇)

    Web Service使用的主要协议是HTTP协议,即超文本传输协议. HTTP/1.1协议共定义了8种请求方法(OPTIONS.HEAD.GET.POST.PUT.DELETE.TRACE.CONN ...

  5. HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误

    (来源:http://www.tuicool.com/articles/Ermmmyn) HTTP请求方法: 常用方法: Get\Post\Head (1)Get方法. 取回请求URL标志的任何信息, ...

  6. HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结

    HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行   请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GE ...

  7. HTTP 笔记与总结(2 )HTTP 协议的(请求行的)请求方法 及 (响应行的)状态码

    (请求行的)请求方法 包括: GET,POST,HEAD,PUT,TRACE,DELETE,OPTIONS 注意:这些请求方法虽然是 HTTP 协议规定的,但是 Web Server 未必允许或支持这 ...

  8. httpclient请求方法

    /** * httpclient请求方法 * @param url 请求地址 * @param paramMap 请求参数 * @param ent 编码格式 gbk.utf-8 * @return ...

  9. HTTP请求方法对照表

    根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELE ...

  10. http请求方法与响应状态码

    请求方法:GET POST HEAD PUT DELETE OPTIONS常用的方法是:GET POST GET提交可以在浏览器地址栏看到提交的信息 POST提交方式不显示在地址栏,相对于GET方式较 ...

随机推荐

  1. Playwright自动化登录JD

    import base64 import random import re import time from playwright.sync_api import sync_playwright im ...

  2. ASP 代码示例,可以生成一个8位随机字符串由字母和数字组成

    ChatGP回答的: 下面是一个 ASP 代码示例,可以生成一个8位随机字符串由字母和数字组成: ```Function generateRandomString(length) dim chars, ...

  3. MySQL事务ACID-隔离级别-锁介绍

    ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则 ...

  4. runoob-TypeScript 教程

    https://www.runoob.com/typescript/ts-tutorial.html TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准( ...

  5. MySQL---事务、死锁、mvcc原理

    前言 在MySQL的众多存储引擎中,只有InnoDB支持事务,所有这里说的事务隔离级别指的是InnoDB下的事务隔离级别. MySQL 是支持多事务并发执行的.否则来一个事务处理一个请求,处理一个人请 ...

  6. springboot集成测试最小化依赖实践

    目录 简介 版本及依赖引入 springboot版本 项目部分依赖 直接使用SpringBootTest方式 代码示例 场景及优劣 最小化依赖方案 代码 思路及步骤 最小化依赖方案的优点 结论 简介 ...

  7. 让你看懂dart中静态成员和继承

    静态属性和静态方法 在dart中,我们可以通过关键字 static来定义静态属性和静态方法. 需要注意的是: 静态方法不能访问非静态属性[结论1] 非静态方法可以访问静态成员[结论2] 我们通过下面的 ...

  8. VirtualBox配置安装入门(Linux连不上网络和设置共享文件夹)

    VirtualBox配置安装入门 一.设置虚拟网卡 1.安装了虚拟机之后,可以在网络选择网卡 网络分为网络地址转换(NAT).桥接网卡.内部网络.仅主机(Host-Only)网络,通用驱动.NAT网络 ...

  9. 更快更省更好用!天翼云云原生一体机iStack打通物云最后一公里!

    近年来,随着企业数字化转型的深入,从传统 IT 架构向云原生架构转型,已经成为企业谋求更高质量发展的必由之路.然而,云原生技术复杂度高,运维成本高,且技术工具间的集成度不足.打破云原生技术应用门槛,以 ...

  10. IDEA 接入 DeepSeek,太酷了!

    你好,我是 Guide.前两天,我发文提到 DeepSeek 的回答推荐了我的资料 <JavaGuide 面试突击版>(PDF):DeepSeek 的这波回答我给满分!. 这篇文章简单介绍 ...