来自浏览器

时间:2017-08-07 15:43:59

标签: javascript get xmlhttprequest fetch axios

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

有没有办法从浏览器做异步请求? 我正在使用axios库,其中使用了XMLHttpRequestMDNsend在HTTP方法GET时擦除了正文。 我尝试使用原生fetch,但它在浏览器中给出了这个错误: TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.

有什么办法吗?

1 个答案:

答案 0 :(得分:2)

不,没有。

GET requests无法拥有请求正文,您无法让他们拥有请求正文。 GET请求只检索数据,它们从不发送数据。

需要使用空对象作为正文的GET请求的API不起作用。

编辑:

显然,允许GET请求有一个正文。大多数实现将忽略它或拒绝请求。但即使提供API的服务器允许使用正文,也无法使用它:

来自XMLHttpRequest#send的规范:

  

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

根据fetch API中的Request class规范:

  

如果init的正文成员存在并且为非null或 inputBody为非null ,并且请求的方法为GETHEAD 然后抛出TypeError

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