[HTTP] GET请求的body能否携带数据?
cnblogs 2024-06-24 08:11:00 阅读 70
RFC规范并没有指明HTTP协议的GET方法是否不能携带body数据,但是对于浏览器环境下的XHR和fetch API的规范来说,它们的规范限制了它们不能在GET中携带body,而postman或apifox等接口测试工具则由于不遵循这些规范而可以携带body。
在与后端对接口的时候,有个GET分页接口,需要传pageSize,currentPage等参数,这种不敏感的数据其实直接拼接在url上面就好了,但是后端可能出于开发习惯就把接口的这些参数放在了body上,并在postman或者apifox上测试没毛病,就让前端开始对接。前端在对接的过程中发现添加到body中的数据发送失败。
所以GET请求的body数据是如何被处理的?
RFC规范并没有说明GET请求不能携带body。
而前端(浏览器环境)的网络请求,不管用了什么第三方网络请求库,最后使用的API无外乎XHR和fetch API。
- 对于XHR,在WHATWG标准中,说明了如果请求方法为GET或者HEAD,那么body会被设置为null。
https://xhr.spec.whatwg.org/#the-send()-method 第3条
- 而对于fetch API,在WHATWG标准中,如果设置了body并且请求方法是GET或HEAD,那么会直接抛出异常。
https://fetch.spec.whatwg.org/#request-class 第35条
由于postman和apifox的实现是不遵循WHATWG标准的,所以在这些工具中测试GET请求可以把数据放到body里。
但是对于前端开发(浏览器环境)来说,GET请求是不能把数据放到body里的。
根据实际需求,可以考虑把参数拼接到url上,或者如果坚持将数据携带在body中,可以考虑使用POST方法。
上一篇: Day57:WEB攻防-SSRF服务端请求&Gopher伪协议&无回显利用&黑白盒挖掘&业务功能点
下一篇: java: 无法访问org.springframework.web.WebApplicationInitializer找不到org.springframework.web.WebApplication
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。