PS:偶然兴趣接触了一下easyui和DWZ等轻量级WEB前端JavaScript框架,一个phper只要懂点js就能快速的搭建完成对于一些简单的站点后台.但是在lnmp环境运行查看easyui的demo的时候,请求却一直无法获取到json文件数据,显示405错误.
-
405出现的原因
Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。
-
三种解决方案
1.重定向 405 错误码到 200
server { listen 80; server_name www.test.loc; root /mnt/hgfs/vmhtdocs/phmagick/; index index.php index.html index.htm; # #通过查找路径去匹配指向,重定向405错误码到200 #root 路径和环境的路径一样即可 location ~ ^/(jquery-easyui-1.3.2/demo)/ { root /mnt/hgfs/vmhtdocs/phmagick/; error_page 405 =200 $uri; } # location ~ \.php { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
2. 修改 Nginx 源码
源码文件位于 /nginx源码目录/src/http/modules/ngx_http_static_module.c ,找到如下代码:if (r->method & NGX_HTTP_POST) { return NGX_HTTP_NOT_ALLOWED; }
整段注释掉,然后重新编译make,不要make install,然后把编译生成的nginx文件复制到sbin下的 nginx 文件,重启 nginx 即可
总结:
Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。
参考:
1.DWZ富客户端框架官网
2.easyui官网
3.Nginx 静态文件中的 POST 请求返还 405 Method not allowed 错误