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
Release: 2016-09-23 11:31:05
Original
1537 people have browsed it

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

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>
Copy after login
Copy after login

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>
Copy after login
Copy after login

这是返回
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>
Copy after login
Copy after login

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>
Copy after login
Copy after login

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>
Copy after login
Copy after login

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

这个应该和nginx没关系吧

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template