我正在尝试获取请求的 http-accept header ,但在从中获取 header 时我得到了不同的值
- Java -
req.getHeader("Accept") + req.getHeader("Accept-Encoding") + req.getHeader("accept-language")
- PHP -
'<?php echo $_SERVER['HTTP_ACCEPT'].$_SERVER['HTTP_ACCEPT_ENCODING'].$_SERVER['HTTP_ACCEPT_LANGUAGE']; ?>
结果是:
-
*/*gzip,deflate,sdchen-US,en;q=0.8
-
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8gzip,deflate,sdchen-US,en;q=0.8
它们为什么不同?
我是不是理解错了?
最佳答案
PHP 返回所有请求参数,而您的 Java HTTP 客户端仅返回一个。
HttpServletRequest
方法提供了 getHeaders(String)
那个
Returns all the values of the specified request header as an
Enumeration
ofString
objects.
所以使用它。
注意 Java 结果如何(拆分以说明您正在执行的 String
连接)
*/* */
^ the last 'Accept' header value
gzip,deflate,sdch
^ the 'Accept-Encoding'
en-US,en;q=0.8
^ the 'Accept-Language'
我不确定为什么它不为其他 header 执行此操作。
如果您的输出更易于阅读,这从一开始就会更加清晰。不要只是像那样连接字符串。使用某种分隔符。
关于java - HTTP-Accept header 在几种方法上是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20827504/