axios.post 正在发送 GET 请求

axios.post is sending a GET request

我有一个使用 react/axios 的 chrome 扩展。在该应用程序中,我发送了一个 post 请求,如下所示:

export const createComment = payload => {
  const url = `${COMMENTS_BASE_URL}`;
  const promise = axios.post(url, payload);
  return { type: CREATE_COMMENT, promise };
}

即使显然是 axios.post(),浏览器正在向 url 发送 GET 请求,这是不允许的(响应 405)。我也尝试过使用 axios({ method: 'post', ... }) 但同样的事情发生在浏览器发送 GET 请求时。

尝试删除 COMMENTS_BASE_URL 中的尾部斜杠(如果有的话)。

即使用 '/resource' 而不是 '/resource/'。我们遇到了同样的问题。

就我而言,我的服务器使用 https

所以,http => https

然后问题解决了。

发生这种情况然后 URL 从 POST 调用重定向,GET 在重定向后发生。 最常见的重定向是由不需要的尾部斜杠或 http 重定向到 https

引起的

一般来说,这是因为

  1. 原始 POST 请求由于某种原因被服务器重定向并且
  2. 在这种情况下,
  3. chrome 开发工具出于某些未知原因隐藏了初始 POST 请求。

典型问题有:

  • 缺少身份验证导致302 redirect
  • 使用 http,服务器使用 301302.
  • 重定向到 https

但是可能还有其他原因,因此您应该检查发送到您服务器的 HTTP 请求以了解发生了什么。像 tcpflow 这样的工具是合适的。在 nginx 上,您可以拖尾 access.log 文件。我们的想法是了解最初的 POST 请求发生了什么,以便更正潜在的问题。