Home >Backend Development >PHP Tutorial >nginx automatically converted the 405 status code I returned into 200

nginx automatically converted the 405 status code I returned into 200

WBOY
WBOYOriginal
2016-09-23 11:31:051561browse

首先我用了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>

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>

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>

这是返回
nginx automatically converted the 405 status code I returned into 200

回复内容:

首先我用了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>

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>

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>

这是返回
nginx automatically converted the 405 status code I returned into 200

这个应该和nginx没关系吧

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn