Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自浏览器的带正文的异步GET请求_Javascript_Get_Xmlhttprequest_Fetch_Axios - Fatal编程技术网

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

Javascript 来自浏览器的带正文的异步GET请求,javascript,get,xmlhttprequest,fetch,axios,Javascript,Get,Xmlhttprequest,Fetch,Axios,好的,我知道这是一个坏主意,不应该这样做,但是为了这个问题,请假设没有其他方法-我得到的API端点要求GET请求以空对象作为主体 是否有一种从浏览器执行异步请求的方法? 我使用的是axios库,它在引擎盖下使用XMLHttpRequest,表示当HTTP方法为GET时,send会擦拭身体。 我尝试使用本机fetch,但在浏览器中出现以下错误: TypeError:未能在“窗口”上执行“获取”:带有GET/HEAD方法的请求不能有正文。 有办法吗?没有 不能有一个请求主体,你不能让他们有一个。GE

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

是否有一种从浏览器执行异步请求的方法? 我使用的是
axios
库,它在引擎盖下使用
XMLHttpRequest
,表示当HTTP方法为
GET
时,
send
会擦拭身体。 我尝试使用本机
fetch
,但在浏览器中出现以下错误:
TypeError:未能在“窗口”上执行“获取”:带有GET/HEAD方法的请求不能有正文。

有办法吗?

没有

不能有一个请求主体,你不能让他们有一个。GET请求只检索数据,从不发送数据

一个需要GET请求并将空对象作为主体的API根本不起作用

编辑: 显然,GET请求被允许有一个主体。大多数实现都会忽略它或拒绝请求。但是,即使提供API的服务器允许一个主体,您也不能使用它:

从规范中,关于:

启动请求。可选参数提供请求实体主体如果请求方法是GET或HEAD,则忽略该参数。如果状态未打开或设置了send()标志,则引发“InvalidStateError”异常

从规范中,关于获取API中的:

如果init的body成员存在且为非null或inputBody为非null,并且请求的方法为
GET
HEAD
则抛出类型错误


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

hmmm在进行研究时,我发现这并不完全正确——例如弹性搜索允许这种情况。所以我相信灰色地带标准并没有直接禁止。顺便说一句:这是规范:它所说的是“GET请求消息中的负载没有定义的语义;在GET请求上发送负载体可能会导致一些现有实现拒绝该请求。”是的,看起来你是对的。但是我不认为
XMLHttpRequest
或者fetchapi会让你给它一个body。实际上这并不完全正确,GET-request“可以”有一个可以在服务器端处理的请求body。