HTTP 拟新增 QUERY 方法:带请求体的安全查询

来源: https://x.com/1024DevHub/status/2068238637850906792

IETF HTTP 工作组正在制定一项草案,新增 HTTP QUERY 请求方法。它允许像 POST 一样把查询条件放在请求体里,但具有 GET 的安全和幂等特性,便于缓存、重试和自动恢复。

QUERY 主要解决 URI 查询字符串太长的问题,并定义了 Accept-Query 响应头,让服务器声明支持的查询格式。草案仍在讨论中,当前版本将于 2026 年 12 月到期。

草案: https://httpwg.org/http-extensions/draft-ietf-httpbis-safe-method-w-body.html

草案关键点阅读:

用GET 方法进行请求

GET /feed?q=foo&limit=10&sort=-published HTTP/1.1
Host: example.org

q=foo&limit=10&sort=-published 这条东西非常非常长,变成 q=foo&limit=10&sort=-published&name=xijinping&skill=shilishanlubuhuanjian&birth=19530615&id=110101195306153019&address=zhongnanhai..... ,就可能无法在请求的URI中编码

用POST 方法进行请求不幂等

POST /feed HTTP/1.1 
Host: example.org 
Content-Type: application/x-www-form-urlencoded 

q=foo&limit=10&sort=-published

那什么是幂等呢?

如果同样的请求被执行一次与连续执行多次,对服务器的预期影响是相同的,那么称这个 HTTP 方法是幂等的

这不意味着请求不会有任何副作用,比如,服务器可能会对所有请求做记录。幂等性只针对客户端所希望的效果而言:比如,一个 POST 请求期望将数据发给服务器,或一个 DELETE 请求期望在服务器上删除某个资源。
所有的安全方法也都是幂等的,包括 PUTDELETE。而 POST 方法不是幂等的。
https://developer.mozilla.org/zh-CN/docs/Glossary/Idempotent

于是制定了新方法 QUERY 弥合了 GET 和 POST 方法之间的差距

QUERY /feed HTTP/1.1
Host: example.org
Content-Type: application/x-www-form-urlencoded

q=foo&limit=10&sort=-published

个人点评:
2026年冷藏搁置了好多年的互联网底层新规则、方法、协议都开始推动,像IPv8,莫不是习主席在冥冥中指明了方向
对 xhttp的利好就是:又有一个新方法可以使用了

1 个赞