首页 > 其他分享 >[HTTP] GET请求的body能否携带数据?

[HTTP] GET请求的body能否携带数据?

时间:2024-06-23 22:53:36浏览次数:3  
标签:body HTTP 请求 GET API 数据 fetch

在与后端对接口的时候,有个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方法。

标签:body,HTTP,请求,GET,API,数据,fetch
From: https://www.cnblogs.com/feixianxing/p/18264065/network-web-standard-api-test-get-body

相关文章

  • UE 不修改源码实现遮罩控件 (Mask Widget)
    本文内容的参考和灵感来自以下链接GitHub-inkiu0/MaskWidget:UE4MaskWidgetGitHub-JanSeliv/CustomShapeButton:Open-sourcepluginthatallowstomakebuttonsofanyshapeinUE5.4在UE有一个很麻烦的地方,Slate事件不是按照堆叠顺序传递的,就会形成以下现象上......
  • OKhttp3
    okHttp3restTemplate引入//创建ConnectionPoolConnectionPoolconnectionPool=newConnectionPool(5,5,TimeUnit.MINUTES);//创建OkHttpClient并设置参数OkHttpClientokHttpClient=newOkHttpClient.Builder().connectio......
  • 显示类控件——Calendar Widget
    ......
  • jmeter中beanshell-regex用法-prev.getTime()
    jmeter-beanshellPostprocessor,实现需求:判断响应时间大于10ms的响应,并记录想要的响应字段,比如流水号,注册的用户名密码等代码如下:importjava.util.regex.Matcher;importjava.util.regex.Pattern;//这里引入判断响应时间的代码,如判断响应时间超过10ms,则记录流水号longresp......
  • ​HTTP与HTTPS:网络通信的安全卫士
    ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ ......
  • kettle从入门到精通 第七十三课 ETL之kettle kettle调用http分页接口教程
    场景:kettle调用http接口获取数据(由于数据量比较大,鉴于网络和性能考虑,所以接口是个分页接口)。 方案:构造页码list,然后循环调用接口。1、总体设计1)、初始化分页参数pageNum=1,pageSize=20,这里的pageSize可以根据自己的需求自行调整,比如每次从接口取数100或者1000等等。2)、第一......
  • drogon orm分页问题,req->getJsonObject()为空会导致Segmentation fault
    2024年6月22日17:14:12req->getJsonObject()获取json数据的时候,如果没有提前判断if(req->getJsonObject()==nullptr){throwstd::invalid_argument("参数json不能为空");}autojsonPtr=req->getJsonObject();官方文档:h......
  • SpringBoot 过滤器更改 Request body ,并实现数据解密
    客户端、服务端网络通信,为了安全,会对报文数据进行加解密操作。在SpringBoot项目中,最好使用参考AOP思想,加解密与Controller业务逻辑解耦,互不影响。以解密为例:需要在request请求到达Controller之前进行拦截,获取请求body中的密文并对其进行解密,然后把解密后的明文重新设置到request......
  • 解决unable to find valid certification path to requested target
    昨天访问供应商提供的接口还是正常的,今天早上上班却被告知系统功能总是提示错误,完全用不了,查询系统日志以及本地重新测试发现,调用供应商提供的接口提示unabletofindvalidcertificationpathtorequestedtargetjavax.net.ssl.SSLHandshakeException:GeneralOpenSslEngine......
  • caddy 模块(module) caddyhttp Start启动逻辑分析
     ./modules/caddyhttp/app.gofunc(app*App)Start()error{//xx} Start方法属于一个自定义的App结构体,用于启动应用程序中的多个HTTP服务器实例。下面是对该方法的主要逻辑和关键步骤的详细分析:1.日志设置:首先,通过zap.NewStdLogAt创建一个兼容......