axios.post 正在发送一个 GET 请求

Posted

技术标签:

【中文标题】axios.post 正在发送一个 GET 请求【英文标题】:axios.post is sending a GET request 【发布时间】:2018-03-18 14:05:10 【问题描述】:

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

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 请求时也会发生同样的事情。

【问题讨论】:

所以这与您嵌入的 chrome 扩展有关,因为 axios.post() 应该在普通网页上工作? 【参考方案1】:

如果有,请尝试删除 COMMENTS_BASE_URL 中的尾部斜杠。 即使用“/resource”而不是“/resource/”。我们遇到了同样的问题。

【讨论】:

你拯救了我的一天! 我实际上在末尾添加了一个斜线,它开始工作了。 :-/ 这是很奇怪的行为。 老兄!你救我!我已经与这个错误斗争了两个小时,我一直认为这是我后端的一个错误,直到我厌倦了试图查看什么和在哪里,然后我来到了这里。 就我而言,我不得不使用https://www.example.com 而不是https://example.com 太好了,这为我解决了!我发现当 Axios 收到 301(永久移动)时会发生此问题,因为它会进行重定向,但也会将方法更改为“GET”。根本原因是 URL 格式不正确(正如 Pavel 所说,检查路径末尾是否需要斜杠)。由于这可能会导致意外行为,我选择在 Axios 配置中添加 maxRedirects: 0【参考方案2】:

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

所以,http => https

那么问题就解决了。

【讨论】:

这个帮助了我。 这个也帮了我 这也是我的情况【参考方案3】:

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

【讨论】:

【参考方案4】:

通常会发生这种情况,因为

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

典型问题是:

缺乏身份验证导致302 redirect。 使用http,服务器通过301302 重定向到https

但是可能还有其他原因,因此您应该检查发送到服务器的 HTTP 请求以了解发生了什么。像tcpflow 这样的工具是合适的。在 nginx 上,您可以跟踪 access.log 文件。这样做的目的是了解初始 POST 请求会发生什么,以便更正根本问题。

【讨论】:

与 www 相同。重定向

以上是关于axios.post 正在发送一个 GET 请求的主要内容,如果未能解决你的问题,请参考以下文章

axios发送请求

可以将 POST 请求重定向为另一个 GET 请求吗

如何检索由axios post请求发送的php中的变量[重复]

在Python Flask中,Axios POST没有被正确解析。

axios get,post请求时带headers

vue中axios的post和get请求示例