我有一个使用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请求时。
4条答案
按热度按时间qrjkbowd1#
尝试删除COMMENTS_BASE_URL中的尾随斜杠(如果有的话)。
即使用
'/resource'
而不是'/resource/'
。我们遇到了同样的问题。fgw7neuy2#
在我的例子中,我的服务器使用
https
因此,
http
=>https
那问题就解决了
0x6upsns3#
这发生在URL从POST调用重定向之后,GET在重定向之后发生。最常见的重定向是由不需要的尾随斜杠或http重定向到https引起的
zpf6vheq4#
一般来说,这是因为
1.由于某种原因,服务器重定向了原始POST请求
1.浏览器遵循重定向并根据
Location
报头发出GET请求典型的问题是:
302
重定向。http
,服务器使用301
或302
重定向到https
。但是,可能还有其他原因,所以您应该检查发送到服务器的HTTP请求以了解发生了什么。像
tcpflow
这样的工具是合适的。在nginx上,你可以跟踪access.log
文件。这个想法是为了了解初始POST请求发生了什么,以便可以纠正潜在的问题。