And*_*vin 18 javascript ajax rest xmlhttprequest http-get
我必须与从 GET 请求正文中获取参数的 API 进行交互。我知道这可能不是最好的主意,但它是 API 的构建方式。
当我尝试使用 构建查询时XMLHttpRequest,看起来负载根本没有发送。您可以运行它并查看网络选项卡;请求已发送,但没有正文(在最新的 Chrome 和 Firefox 中测试):
const data = {
  foo: {
    bar: [1, 2, 3]
  }
}
const xhr = new XMLHttpRequest()
xhr.open('GET', 'https://my-json-server.typicode.com/typicode/demo/posts')
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')
xhr.send(JSON.stringify(data))
诸如 axios 之类的库是基于 XMLHttpRequest 构建的,因此它们也无法正常工作...
有没有办法在 JavaScript 中实现这一点?
Iva*_*var 22
不,不可能在 JavaScript 中发送带有正文的 GET 请求。
看起来负载根本没有发送
那是正确的。这在规范中定义:
该
send(body)方法必须运行以下步骤:...
- 如果请求方法是
GET或HEAD,则将body设置为 null。
- 如果 init["body"] 存在且非空或 inputBody 非空,并且请求的方法是
GETorHEAD,则抛出 TypeError 。
最好是 API 可以修复。
如果这是不可能的,您可以添加一个服务器端脚本,您可以将其用作将请求传递给 API 的代理。您可以使用带有 URL 中的数据而不是正文的 GET 请求调用此脚本,或者使用带有正文的 POST 请求。然后,此脚本可以使用主体发出 GET 请求(只要所选语言支持它)。
| 归档时间: | 
 | 
| 查看次数: | 18620 次 | 
| 最近记录: |