Nginx靜態檔案響應POST請求,提示405錯誤相關問題

來源:互聯網
上載者:User

Apache、IIS、nginx等絕大多數web伺服器,都不允許靜態檔案響應POST請求,否則會返回“HTTP/1.1 405 Method not allowed”錯誤。
例1:用linux下的curl命令發送POST請求給Apache伺服器上的HTML靜態頁

[root@localhost ~]# curl -d 11=1 http://www.92csz.com/index.html   <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">  <HTML>      <HEAD>          <TITLE>405 Method Not Allowed</TITLE>      </HEAD>      <BODY>          <H1>Method Not Allowed</H1>          The requested method POST is not allowed for the URL /index.html.<P>          <HR>          <ADDRESS>Apache/1.3.37 Server at www.92csz.com Port 80</ADDRESS>      </BODY>  </HTML>  

例2:用linux下的curl命令發送POST請求給nginx伺服器上的HTML靜態頁

[root@localhost ~]# curl -d 11=1 http://www.92csz.com/index.htm   <html>      <head><title>405 Not Allowed</title></head>      <body bgcolor="white">          <center><h1>405 Not Allowed</h1></center>          <hr><center>nginx/1.2.0</center>      </body>  </html>  

但在有些應用中,需要使靜態檔案能夠響應POST請求。
對於Nginx,可以修改nginc.conf設定檔,改變“405錯誤”為“200 ok”,並配置location來解決,方法如下:

server   {       listen  80;       server_name www.92csz.com;       index index.html index.htm index.php;       root  /opt/htdocs;       if (-d $request_filename)       {           rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;       }       error_page  405 =200 @405;       location @405       {           root  /opt/htdocs;       }       location ~ .*\.php?$       {           include conf/fcgi.conf;                fastcgi_pass  127.0.0.1:10080;           fastcgi_index index.php;       }   }  

當然也可以修改nginx原始碼來解決
修改原始碼,重新編譯安裝nginx
編輯nginx原始碼

[root@localhost ~]# vim src/http/modules/ngx_http_static_module.c  

修改: 找到下面一段注釋掉

/*  if (r->method & NGX_HTTP_POST)  {      return NGX_HTTP_NOT_ALLOWED;  }  */  

然後按照原來的編譯參數,重新編譯安裝nginx,即可

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.