Heim > Backend-Entwicklung > PHP-Tutorial > Nginx hat den von mir zurückgegebenen Statuscode 405 automatisch in 200 umgewandelt

Nginx hat den von mir zurückgegebenen Statuscode 405 automatisch in 200 umgewandelt

WBOY
Freigeben: 2016-09-23 11:31:05
Original
1537 Leute haben es durchsucht

首先我用了symfonyhttp-foundation这个组件。

ajax请求端:

<code>$.ajax({
     url:  jsui.www + 'comment/add',
     data: $(this).serialize(),
     type: $(this).attr('method'),
     error: function(request) {
            $('.comt-loading').slideUp(300);
            $('.comt-error').slideDown(300).html(request.responseText);
     },
     success: function(data) {...}
     ...</code>
Nach dem Login kopieren
Nach dem Login kopieren

php响应端:

<code>public function add()
{
        //header('HTTP/1.1 405 Method Not Allowed');
        //echo 'Content';
        //exit;  //这样写也返回200
        
        $response = new Response(
            'Content405!',
            Response::HTTP_METHOD_NOT_ALLOWED,
            array('content-type' => 'text/html')
        );
        //var_dump($response);die();
        return $response;
 }</code>
Nach dem Login kopieren
Nach dem Login kopieren

nginx配置:

<code>http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   E:\Nginx\www;
            index  index.html index.htm index.php;
            if (!-e $request_filename) {
                #一级目录下
                #rewrite ^/(.*)$ /index.php/$1 last;
                #域名下的二级目录
                rewrite ^/newblog/web/(.*)$ /newblog/web/index.php/$1 last;
            }
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php {
            root           E:\Nginx\www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info ^(.+\.php)(.*)$;        #增加这一句
            fastcgi_param  PATH_INFO $fastcgi_path_info;    #增加这一句
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }</code>
Nach dem Login kopieren
Nach dem Login kopieren

这是返回
Nginx hat den von mir zurückgegebenen Statuscode 405 automatisch in 200 umgewandelt

回复内容:

首先我用了symfonyhttp-foundation这个组件。

ajax请求端:

<code>$.ajax({
     url:  jsui.www + 'comment/add',
     data: $(this).serialize(),
     type: $(this).attr('method'),
     error: function(request) {
            $('.comt-loading').slideUp(300);
            $('.comt-error').slideDown(300).html(request.responseText);
     },
     success: function(data) {...}
     ...</code>
Nach dem Login kopieren
Nach dem Login kopieren

php响应端:

<code>public function add()
{
        //header('HTTP/1.1 405 Method Not Allowed');
        //echo 'Content';
        //exit;  //这样写也返回200
        
        $response = new Response(
            'Content405!',
            Response::HTTP_METHOD_NOT_ALLOWED,
            array('content-type' => 'text/html')
        );
        //var_dump($response);die();
        return $response;
 }</code>
Nach dem Login kopieren
Nach dem Login kopieren

nginx配置:

<code>http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   E:\Nginx\www;
            index  index.html index.htm index.php;
            if (!-e $request_filename) {
                #一级目录下
                #rewrite ^/(.*)$ /index.php/$1 last;
                #域名下的二级目录
                rewrite ^/newblog/web/(.*)$ /newblog/web/index.php/$1 last;
            }
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php {
            root           E:\Nginx\www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info ^(.+\.php)(.*)$;        #增加这一句
            fastcgi_param  PATH_INFO $fastcgi_path_info;    #增加这一句
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }</code>
Nach dem Login kopieren
Nach dem Login kopieren

这是返回
Nginx hat den von mir zurückgegebenen Statuscode 405 automatisch in 200 umgewandelt

这个应该和nginx没关系吧

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage