nginx 和 HTTP Referer

nginx 和 HTTP Referer

我将 nginx 与 php5-fpm 一起使用,并使用以下fastcgi_params文件:

fastcgi_param   CONTENT_LENGTH      $content_length;
fastcgi_param   CONTENT_TYPE        $content_type;
fastcgi_param   DOCUMENT_ROOT       $document_root;
fastcgi_param   DOCUMENT_URI        $document_uri;
fastcgi_param   GATEWAY_INTERFACE   CGI/1.1;
fastcgi_param   HTTPS               $https;
fastcgi_param   PATH_INFO           $fastcgi_path_info;
fastcgi_param   PATH_TRANSLATED     $document_root$fastcgi_path_info;
fastcgi_param   QUERY_STRING        $query_string;
fastcgi_param   REDIRECT_STATUS     200;
fastcgi_param   REMOTE_ADDR         $remote_addr;
fastcgi_param   REMOTE_PORT         $remote_port;
fastcgi_param   REQUEST_METHOD      $request_method;
fastcgi_param   REQUEST_URI         $request_uri;
fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
fastcgi_param   SCRIPT_NAME         $fastcgi_script_name;
fastcgi_param   SERVER_ADDR         $server_addr;
fastcgi_param   SERVER_NAME         $server_name;
fastcgi_param   SERVER_PORT         $server_port;
fastcgi_param   SERVER_PROTOCOL     $server_protocol;
fastcgi_param   SERVER_SOFTWARE     nginx/$nginx_version;

我注意到该$_SERVER['HTTP_REFERER']变量未设置。我在 nginx wiki 中搜索了对 Referer 标头的任何引用,但没有找到任何提及与 fastcgi 相关的问题的内容。

我怎样才能让 nginx 传递该标头?我是否遗漏了某些明显的东西?

答案1

HTTP_REFERER当且仅当远程用户代理(例如 Web 浏览器)提供可选标头时,nginx 才会为 CGI 脚本设置环境变量。Referer:此标头的内容对于远程用户代理而言也是完全任意的(尽管它们应该是最后访问的页面,但情况并不总是如此,并且没有任何因素限制它必须如此。

无论何时您的 CGI 脚本使用此变量,它都应该有一个备用控制路径来处理未设置的情况,并且它应该认识到它经常是错误的或被欺骗的。

相关内容