查询字符串打印在某些响应中

查询字符串打印在某些响应中

我有一个非常奇怪的问题,我有一个服务器运行 nginx 作为 PHP 的反向代理。

在前端,我发送期望 json 作为响应的 ajax 请求,当发出请求时,大多数情况下一切都按预期工作,但有时没有明显的原因,post 参数会在 json 响应之前打印出来。

例如,我发出一个带有 post 参数的 post 请求(如 sample.com/request)[name:something,id:somethingelse],服务器大多数情况下会像这样响应

{"index":0,"part":false}

但有时像这样

名称 = 某物&id = 某物其他{“索引”:0,“部分”:false}

这是一个完全损坏的 json,因此请求无法发布刚刚完成的处理。

我仔细检查了两三遍,发现代码中没有打印 POST 变量的地方,我甚至尝试使用 php outputbuffer,它有助于解决问题,但问题仍然发生。

nginx 是否可能由于某些配置而添加此功能?

我刚刚在入口脚本中做了一个测试,我所做的是这样的

<?php
exit;

而且它所做的完全相同,一些响应应该是空的,因为没有打印任何内容,只是存在,而其他一些响应有响应名称=something&id=somethingelse,所以它肯定不是脚本。

nginx 配置

server {
    include                                 /www/nginx/conf/generic/base;
    include                                 /www/nginx/conf/domains_ssl/sample_com.conf;
    server_name                             sample.com;
    client_body_temp_path   /www/tmp/sample_com_client_body_temp;
    proxy_temp_path                 /www/tmp/sample_com_proxy_temp_path;
    fastcgi_temp_path               /www/tmp/sample_com_fastcgi_temp_path;
    root                                    /www/http/sample_com/public;
    location ~ \.php$ {
            include                 /www/nginx/conf/generic/php_config_dev;
            fastcgi_pass    _local;
    }
    include                         /www/nginx/conf/generic/location_base;
}

nginx 基础

access_log                                      off;
listen                                          443  ssl http2;
ssl                                                     on;
client_max_body_size            1000M;
ssl_protocols                           TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers       on;
ssl_ciphers                                     EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_dhparam                     /www/ssl/dhparam.pem;
index                                           index.php index.html index.htm;
client_body_buffer_size         128k;
proxy_buffering                         off;
add_header                                      Strict-Transport-Security "max-    age=31536000; includeSubDomains" always;
ssl_stapling                            on;
ssl_stapling_verify                     on;

nginx 域_ssl/sample_com.conf

ssl_certificate         /www/ssl/sample_com/fullchain.pem;
ssl_certificate_key     /www/ssl/sample_com/privkey.pem;

nginx /www/nginx/conf/generic/php_config_dev

proxy_set_header                        X-Forwarded-Proto  https;
proxy_set_header                        X-Forwarded-For     $proxy_add_x_forwarded_for;
proxy_set_header                        Host $http_host;
proxy_set_header                        X-Url-Scheme $scheme;
add_header                                      Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header                                      X-Content-Type-Options nosniff;
add_header                                      X-XSS-Protection "1; mode=block";
proxy_redirect                          off;
proxy_max_temp_file_size        0;
try_files                                       $uri /index.php =404;
fastcgi_split_path_info         ^(.+\.php)(/.+)$;
fastcgi_index                           index.php;
fastcgi_param                           SCRIPT_FILENAME     $document_root$fastcgi_script_name;
include                                         fastcgi_params;
fastcgi_read_timeout            9000;
autoindex                                       off;

相关内容