我有一个使用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请求的浏览器也会发生同样的事情。
答案 0 :(得分:19)
如果有,请尝试删除COMMENTS_BASE_URL中的尾部斜杠。 即使用' / resource'而不是' / resource /'。我们遇到了同样的问题。
答案 1 :(得分:5)
就我而言,我的服务器使用https
所以http
=> https
然后问题解决了。
答案 2 :(得分:1)
发生这种情况,然后从POST调用重定向URL,并在重定向后执行GET。 最常见的重定向是由不需要的尾部斜杠或http重定向到https
引起的答案 3 :(得分:1)
通常发生这种情况是因为i)在某种情况下,由于某些原因i)原始POST请求被服务器重定向,并且ii)chrome dev工具出于某种未知原因隐藏了初始POST请求。典型的问题是:
302 redirect
。http
,服务器通过https
或301
将其重定向到302
。但是,可能还有其他原因,因此您应该检查发送到服务器的HTTP请求,以了解发生了什么情况。像tcpflow
这样的通用工具是合适的。在nginx上,您可以尾随access.log
文件。这个想法是要了解POST请求会发生什么,以便可以更正潜在的问题。