Fetch API Error: Body not allowed for GET or HEAD requests with UUID

阅读更多

报错说明:

bog.js:35 [ERROR] [2018.10.24 10:58:47] 127.0.0.1 [uuid] [thread] [class] - API Error: Body not allowed for GET or HEAD requests with UUID: 49ece288-7a32-4cbe-a421-1439f8ff3f6b when calling /xxx.com/get-xxx

 

事件分析:

》排查bog.js line35,bog.js是无辜的啦,明显我只是输出日志的工具而已。

》排查uuid,查看GitHub issues和源代码,我也是无辜的,仅仅生成一个唯一ID。

》排查Fetch.js请求的Request Header

    经过一番排查,定位于前后代码对比

   

// Before Modified
{
  method: 'POST',
  credentials: 'same-origin',
  headers: {
    token: 'xxxx',
  },
  body: params,
}

// After Modified
{
  method: 'GET',
  credentials: 'same-origin',
  headers: {
    token: 'xxxx',
  },
  body: params,
}

 

    发现后端的请求method把之前的post改成了get请求,导致fetch.js GET请求发送body的信息错误,引起上面的报错提示。

 

解决方案:

    在公共request的function中,判断若是get请求并且body不等于空,则把参数添加到request请求url的后面即可解决。

if (/^get$/i.test(optData.method) && optData.body) {
  apiPath += `${apiPath.indexOf('?') === -1 ? '?' : '&'}${optData.body.toString()}`;
  optData.body = null;
}

 

你可能感兴趣的:(乔乐共享,纵观千象,每天进步一点点,学习永无止境,fetch)