HTTP-Accept标头在几种方法上有所不同

时间:2013-12-29 16:41:25

标签: java php http header httprequest

我正在尝试获取请求的http-accept标头,当我从

获取标头时,我得到不同的值
  1. Java - req.getHeader("Accept") + req.getHeader("Accept-Encoding") + req.getHeader("accept-language")
  2. PHP - '<?php echo $_SERVER['HTTP_ACCEPT'].$_SERVER['HTTP_ACCEPT_ENCODING'].$_SERVER['HTTP_ACCEPT_LANGUAGE']; ?>
  3. 结果是:

    1. */*gzip,deflate,sdchen-US,en;q=0.8
    2. text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8gzip,deflate,sdchen-US,en;q=0.8
    3. 他们为何如此不同?

      我弄错了吗?

1 个答案:

答案 0 :(得分:1)

PHP正在返回所有请求参数,而您的Java HTTP客户端只返回一个。

HttpServletRequest方法提供了getHeaders(String)

  

返回指定请求标头的所有值   EnumerationString个对象。{/ p>

所以使用它。

注意Java结果如何(拆分为您正在进行的String连接的帐户)

*/*                                                                          */
^ the last 'Accept' header value

gzip,deflate,sdch 
^ the 'Accept-Encoding'

en-US,en;q=0.8
^ the 'Accept-Language'

我不确定为什么它不会对其他标题执行此操作。


如果您的输出更容易阅读,那么从一开始就会更加清晰。不要只是像这样连接字符串。使用某种分隔符。