【问题标题】:axios.post is sending a GET requestaxios.post 正在发送一个 GET 请求
【发布时间】: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() 应该在普通网页上工作?

标签: javascript reactjs axios


【解决方案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】:

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

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

    典型问题是:

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

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

    【讨论】:

    • 与 www 相同。重定向
    猜你喜欢
    • 2021-10-26
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 2011-03-13
    • 2022-01-25
    • 2018-02-01
    • 1970-01-01
    • 2020-08-16
    相关资源
    最近更新 更多