get请求浏览器无法添加body,但是apipost却可以?

image.png
如图, 我本地调试没问题。然后精彩的来了,前端说无法这样传参数?那apipost这样设计不就是坑人的嘛?那有个疑问啊,为啥apipost可以get请求添加body,而浏览器不可以了?

阅读 3.9k
5 个回答

HTTP规范中定义了GET请求方法不应该携带请求体(request body)。因此,在浏览器中,无论你是否在请求中添加了请求体,浏览器都会忽略请求体并只发送URL和标头信息。但是,在API测试工具(如Postman)中,你可以手动选择请求方法和是否携带请求体。对于POST请求,它允许携带请求体,因此在API测试工具中你可以添加请求体。如果你想向服务器发送数据,可以考虑将数据作为URL参数或使用POST方法发送请求。

[破涕为笑]我定义个接口get请求,然后我用body接受参数,apipost里面调试没问题,到了前端页面,死活接受不到参数。我现在理解了后端说的,我本地调试没问题啊。

新手上路,请多包涵

理论上来说 get也能加body, 但是在浏览器端, 浏览器会限制get加body的!

最后说一句, get加body确实是不太符合规范!

HTTP 协议没有为 GET 请求的 body 赋予语义,也就是即不要求也不禁止 GET 请求带 body。

大多数 HTTP 实现从技术上都支持 HTTP GET 请求带 body,少数实现会禁止(google-chrome 浏览器、node-fetch),少数实现会不建议(Fiddler)。

基于这个现状,一般来说要避免在 GET 请求中带 body。

参考: https://zhuanlan.zhihu.com/p/456921996

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏