ini NginX允许静态页面上的POST。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ini NginX允许静态页面上的POST。相关的知识,希望对你有一定的参考价值。

# ...

server {
        listen       80;
        server_name  localhost;
    
        location / {
            root   html;
            index  index.html index.htm;
        }
    
        error_page  404     /404.html;
        error_page  403     /403.html;
        
        # To allow POST on static pages
        error_page  405     =200 $uri;
        
        # ...
}

# ...

Nginx下HTML页面POST请求静态JSON数据返回405状态

在浏览器访问HTML页面,发现一些静态JSON数据没有显示,F12查看,如下图所示:

可以看到请求方式为POST

将请求链接复制在浏览器地址栏访问,可以正常请求到数据

F12查看,可以看到请求方式为GET,状态码为200

可知问题为:Nginx下HTML页面POST请求静态JSON数据返回405状态,但用GET请求则正常返回数据。

百度后,有说,Apache、IIS、Nginx等绝大多数Web服务器,都不允许静态文件响应POST请求。

下面进行测试:

系统为CentOS7.5,Nginx(版本:1.16.1)和Apache(版本:2.4.6)都是yum安装

经过测试:

Apache-2.4.6可以正常响应POST请求

对Nginx的解决方法如下:

打开Nginx的配置文件:

vim /etc/nginx/conf.d/default.conf

在location下添加如下的配置:

error_page 405 =200 http://$host$request_uri;

systemctl restart nginx

修改完Nginx的配置文件后,记得重启,让其生效 

用浏览器再次访问HTML页面,F12查看,可以看到请求方式被修改为GET,如下图所示:

这篇文章的解决方法也可以:https://my.oschina.net/lemonzone2010/blog/174505,但操作会多一点

本文参考自:https://blog.csdn.net/weixin_30341745/article/details/97532878

以上是关于ini NginX允许静态页面上的POST。的主要内容,如果未能解决你的问题,请参考以下文章

nginx静态html页面接收post请求,报405 not allowed错误

Nginx下HTML页面POST请求静态JSON数据返回405状态

ApacheIISNginx等绝大多数web服务器,都不允许静态文件响应POST请求

ini Nginx Lua静态脚本服务

.net 核心 nginx 托管套接字不允许 http post

ini Nginx app前端/负载均衡器/静态资产缓存(未测试)