来自浏览器的带有正文的异步 GET 请求



好的,我知道这是一个坏主意,不应该这样做,但为了这个问题,请假设没有其他方法 - 我得到了 API 端点,需要以空对象作为正文的 GET 请求。

有没有办法从浏览器进行异步请求? 我正在使用axios库,该库在引擎盖下使用XMLHttpRequest,MDN 说sendGETHTTP 方法时擦除正文。 我尝试使用本机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 为非空,并且请求的方法为GETHEAD则抛出 TypeError

这意味着您的问题的答案仍然是否定的

最新更新