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
引起的
一般来说,这是因为
- 原始 POST 请求由于某种原因被服务器重定向并且
在这种情况下,- chrome 开发工具出于某些未知原因隐藏了初始 POST 请求。
典型问题有:
- 缺少身份验证导致
302 redirect
。
- 使用
http
,服务器使用 301
或 302
. 重定向到 https
但是可能还有其他原因,因此您应该检查发送到您服务器的 HTTP 请求以了解发生了什么。像 tcpflow
这样的工具是合适的。在 nginx 上,您可以拖尾 access.log
文件。我们的想法是了解最初的 POST 请求发生了什么,以便更正潜在的问题。
我有一个使用 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
引起的一般来说,这是因为
- 原始 POST 请求由于某种原因被服务器重定向并且 在这种情况下,
- chrome 开发工具出于某些未知原因隐藏了初始 POST 请求。
典型问题有:
- 缺少身份验证导致
302 redirect
。 - 使用
http
,服务器使用301
或302
. 重定向到
https
但是可能还有其他原因,因此您应该检查发送到您服务器的 HTTP 请求以了解发生了什么。像 tcpflow
这样的工具是合适的。在 nginx 上,您可以拖尾 access.log
文件。我们的想法是了解最初的 POST 请求发生了什么,以便更正潜在的问题。