【问题标题】:HTTP-Accept header is different on several methodsHTTP-Accept 标头在几种方法上有所不同
【发布时间】:2013-12-29 16:41:24
【问题描述】:

我正在尝试获取请求的 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']; ?>

结果是:

  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

他们为什么不一样?

我理解错了吗?

【问题讨论】:

  • req的类型是什么?
  • 对于 Java,请显示获取标头的代码行,以及如何验证其内容(打印/记录它们,或调试)

标签: java php http header httprequest


【解决方案1】:

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

HttpServletRequest 方法提供了 getHeaders(String)

返回指定请求头的所有值作为 EnumerationString 个对象。

那就用那个吧。

注意 Java 结果如何(拆分以说明您正在执行的String 连接)

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

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

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

我不完全确定为什么它对其他标题不这样做。


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2010-11-11
    • 2010-12-22
    • 2013-09-12
    相关资源
    最近更新 更多