08月01, 2017

405 Method Not Allowed解决办法

状态码 405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求。

这种情况主要发生在纯静态网站发起POST请求的时候,因为Nginx,Apache,IIS等大多数web服务器都不允许静态文件响应POST请求,否则会返回405状态码。需要注意的,GET 与 HEAD 两个方法不得被禁止,所以也不会返回状态码 405。

有些情况下我们需要静态文件响应POST请求,比如SPA应用。这个时候有两个解决方案。

更换请求类型

上面说了GET请求是不会被禁止的,那么将请求改为get请求就可以解决了。如果你任然想用POST来请求数据,那么可以在nginx上做处理。

修改nginx源码

其实在早些版本的nginx的是允许静态文件响应POST请求的,后来从某个版本起就加上了该功能,所以修改nginx源码来解决这个问题也是可以的,但是不建议这么做,如果非要去改nginx源码,Google一下还是挺多的。

修改nginx配置

这个方案比较推荐,既满足了post请求,也不用做太多改动。具体改动如下,在后端服务(提供API的服务)的nginx配置文件上改动如下:

location ~ /api/ {
    error_page 405 =200;
    # 反向代理到相关请求
    proxy_pass http://127.0.0.1:$node_port$request_uri;
}

本文链接:https://luodao.me/post/405-method-not-allowed.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。