好的,我知道这是一个坏主意,不应该这样做,但为了这个问题,请假设没有其他方法 - 我得到了 API 端点,需要以空对象作为正文的 GET 请求。
有没有办法从浏览器进行异步请求? 我正在使用axios
库,该库在引擎盖下使用XMLHttpRequest
,MDN 说send
在GET
HTTP 方法时擦除正文。 我尝试使用本机fetch
但它在浏览器中给了我此错误:TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
有什么办法吗?
不,没有。
GET 请求不能有请求正文,也不能让它们有一个。GET请求只检索数据,从不发送数据。
需要将空对象作为主体的 GET 请求的 API 不起作用。
编辑:
显然,GET 请求被允许有一个正文。大多数实现将忽略它或拒绝请求。但是,即使提供 API 的服务器允许正文,您也不能使用它:
从关于XMLHttpRequest#send
的规范:
启动请求。可选参数提供请求实体正文。如果请求方法是 GET 或 HEAD,则忽略该参数。如果状态不是 OPEN 或设置了 send(( 标志,则引发"InvalidStateError"异常。
从有关获取 API 中Request
类的规范中:
如果 init 的 body 成员存在且为非空,或者inputBody 为非空,并且请求的方法为
GET
或HEAD
,则抛出 TypeError。
这意味着您的问题的答案仍然是否定的。