我有一个应用程序,它有一个网络和Android组件,我希望识别它们中的每一个。为此,我将 HTTP 标头中的用户代理显式设置为特定于 android 的内容。但是Apache并没有将User-Agent传递给我。如果我从同一台机器使用浏览器点击相同的 URL,当我转储 $_SERVER 数组(包括HTTP_USER_AGENT)时,我会在 php 代码中获得完整的标头列表。但是我对安卓客户端一无所获(除了SCRIPT_NAME和REQUEST_TIME)。Apache会过滤掉东西吗?
我看到如果我不在 Java 代码中设置标头,则不会传递任何内容。我使用 tcpdump 并看到以下内容作为传递给服务器的用户代理。
User-Agent: Android app1.0rn
任何帮助将不胜感激。
编辑:这是我用来在我的Android应用程序中添加User-Agent标头的代码。
HttpPost postObj = null;
httpHost = new HttpHost(MyBaseURL);
postObj = new HttpPost(urlpath);
postObj.setHeader("User-Agent", "Android app1.0");
HttpResponse response = httpClient.execute(httpHost, postObj);
谢谢
P
我刚刚阅读了一点关于维基百科上的规范以及维基百科提供的指向实际 RFC 的链接,其中包含 UA 字符串要求的定义,并且似乎要求产品和版本用斜杠分隔。 看看这些:
http://en.wikipedia.org/wiki/User_agent#Format
https://www.rfc-editor.org/rfc/rfc1945#section-3.7
也许 Apache 正在决定您的字符串是无效的用户代理字符串,并且没有考虑它。 尝试更改
Android app1.0
自
Android-app/1.0