大数据分析Hadoop工具有什么特点
更新时间:2022-04-29 17:04
最满意答案
Nginx的http模块在处理HTTP请求时对环境变量的封装与Apache有所不同。除了支持一些与HTTP协议相关的通用的变量之外,还支持一系列Nginx自有的变量,如Nginx配置目录下fastcgi_params.default文件里的$server_protocol、$nginx_version等。正如这个文件中的示例的用途,这些变量可以在配置fastcgi时传递给cgi程序,使其可以作为cgi程序的环境变量来使用。然而,即便是Nginx有了这些自有的变量也无法完全满足所有的需求。 了解Jquery的朋友会发现,Jquery在实现Ajax时会通过setRequestHeader(‘X-Requested-With’, ‘xmlhttprequest’)方法自动添加一个值为“xmlhttprequest”自定义的请求头”X-Requested-With”来标识这是一个Ajax请求,以期处理这个请求的后端能够通过判断这个标识来识别请求类型。那么这个时候PHP是如何来获取这个自定义参数的值的呢? 熟悉Apache和PHP的人一定会第一时间想到$_SERVER["HTTP_X_REQUESTED_WITH"],不错,这对黄金搭配早就把这个问题给完美解决了,但Nginx却不然,这是由Nginx对其自身工作的定位决定的——Nginx只负责HTTP。在Nginx眼里,PHP只是它的一个后端,形象点来说,它只管分发请求,而不管发给谁。这就意味着,我们无法期待Nginx像Apache一样给我们自动完成一些自定义参数到PHP的传递,只有自力更生。简单点说就是,想要直接像$_SERVER["HTTP_X_REQUESTED_WITH"]这样来调用自定义请求头参数的值的话,你就必须手工将其添加到fastcgi_params的配置中,明确告知cgi程序接收,否则Nginx会将其遗弃。 配置环境变量的方法可参照fastcgi_params.default这个文件,在前面的博客“Nginx下虚拟主机环境变量的配置方法”中也提到过。针对上述例子,只需在fastcgi_params文件中增加一行即可: ?12 # for Ajax fastcgi_param HTTP_X_REQUESTED_WITH $http_x_requested_with; 这样,重载Nginx配置后就可以之间在PHP中调用$_SERVER["HTTP_X_REQUESTED_WITH"]来判断请求类型了。其中需要注意以下两点: 一、自定义请求头部的名称不应该包括空白、冒号、换行和下划线。 Nginx在处理客户端请求header头时,会将名称中的中横线”-”替换为下划线”_”,并将所有字母小写再加上”$http_”来作为该名称对应的变量名。例如上述Jquery的例子中setRequestHeader(‘X-Requested-With’, ‘xmlhttprequest’),在HTTP请求头中为一行字符串:”X-Requested-With: xmlhttprequest”,经Nginx处理后将自动生成一个名为$http_x_requested_with的变量,其值为”xmlhttprequest”。尤其注意中横线”-”替换为下划线”_”这个规则,这意味着请求参数名称中如果含有下划线,Nginx将无法正确识别。 二、$_SERVER["HTTP_X_REQUESTED_WITH"]中的索引,也即“fastcgi_param HTTP_X_REQUESTED_WITH $http_x_requested_with;”中加红部分,是可以自由命名的,当前这种命名格式是为了保持和Apache保持一致。 ..
相关问答
更多-
php使用nginx如何获取请求头?[2022-05-13]
Nginx的http模块在处理HTTP请求时对环境变量的封装与Apache有所不同。除了支持一些与HTTP协议相关的通用的变量之外,还支持一系列Nginx自有的变量,如Nginx配置目录下fastcgi_params.default文件里的$server_protocol、$nginx_version等。正如这个文件中的示例的用途,这些变量可以在配置fastcgi时传递给cgi程序,使其可以作为cgi程序的环境变量来使用。然而,即便是Nginx有了这些自有的变量也无法完全满足所有的需求。 了解Jquery的 ... -
nginx 日志记录请求头 是http 还是https[2024-01-12]
可以在日志中记录使用的协议 具体的值要看访问者访问的是http协议还是https协议 -
php使用nginx如何获取请求头?[2023-12-13]
Nginx的http模块在处理HTTP请求时对环境变量的封装与Apache有所不同。除了支持一些与HTTP协议相关的通用的变量之外,还支持一系列Nginx自有的变量,如Nginx配置目录下fastcgi_params.default文件里的$server_protocol、$nginx_version等。正如这个文件中的示例的用途,这些变量可以在配置fastcgi时传递给cgi程序,使其可以作为cgi程序的环境变量来使用。然而,即便是Nginx有了这些自有的变量也无法完全满足所有的需求。 了解Jquery的 ... -
nginx +tomcat tomcat怎么通话request获取tomcat服务的请求头[2023-09-16]
//单个 request.getHeader("headname"); //全部 Enumeration enu = request.getHeaderNames(); while(enu.hasMoreElements()){ String headName = enu.nextElement(); System.out.print(request.getHead(headName)); } -
一般来讲,post到一个静态文件会显示405。 应该是你的nginx或者apche没有rewrite到真实的php文件。
-
php使用nginx如何获取请求头?[2021-12-03]
Nginx的http模块在处理HTTP请求时对环境变量的封装与Apache有所不同。除了支持一些与HTTP协议相关的通用的变量之外,还支持一系列Nginx自有的变量,如Nginx配置目录下fastcgi_params.default文件里的$server_protocol、$nginx_version等。正如这个文件中的示例的用途,这些变量可以在配置fastcgi时传递给cgi程序,使其可以作为cgi程序的环境变量来使用。然而,即便是Nginx有了这些自有的变量也无法完全满足所有的需求。 了解Jquery的 ... -
在nginx模块中如何获得请求消息头全部信息?[2023-06-15]
都没人知道吗?自已顶顶 查看原帖>> -
如果您想将变量传递给代理后端,则必须使用代理模块进行设置。 location / { proxy_pass http://example.com; proxy_set_header Host example.com; proxy_set_header HTTP_Country-Code $geoip_country_code; proxy_pass_request_heade ...
-
如何从客户端获取使用php的套接字的头请求(how can i get the headers request from client side for sockets using php)[2021-09-20]
请参阅: apache_request_headers $value) { echo "$header: $value
\n"; } ?> 当您不将php作为apache模块运行时,您可以使用预定义的$_SERVER变量 : foreach ($_SERVER as $header => $value) { echo "$hea ... -
那是因为默认情况下Nginx不允许带下划线的标头。 您只需将header参数更新为api-token : $request->header('api-token'); 或者,您可以配置Nginx配置以允许带有下划线的标头。 在server块之间的某处,添加underscores_in_headers指令,如下所示: server { ... underscores_in_headers on; ... } 另外,不要忘记重新加载Nginx配置。 在此处阅读有关此underscor ...