HTTP заголовки с Android и php с Apache - PullRequest
1 голос
/ 10 мая 2011

У меня есть приложение, в котором есть веб-компоненты и компоненты Android, и я хочу определить каждый из них.Для этого я явно устанавливаю User-Agent в заголовках HTTP на что-то конкретное для android.Но Apache не передает мне User-Agent.Если я получаю один и тот же URL-адрес в браузере с того же компьютера, я получаю полный список заголовков в коде php при сбросе массива $ _SERVER, включая HTTP_USER_AGENT.Но я ничего не получаю с клиентом Android (за исключением SCRIPT_NAME и REQUEST_TIME).Apache фильтрует вещи?

Я вижу, что если я не установлю заголовки в коде Java, ничего не будет передано.Я использую tcpdump и вижу следующее, когда User-Agent передается на сервер.

User-Agent: Android app1.0\r\n

Любая помощь очень ценится.

EDIT: Вот код, который я использую для добавления пользователя-Агент заголовка в моем приложении для Android.

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

1 Ответ

1 голос
/ 10 мая 2011

Я только что прочитал немного о спецификации в Википедии и ссылке, которую Википедия предоставляет на фактический RFC, содержащий определение требований для строк UA, и, кажется, существует требование, чтобы продукт и версия были разделены косой чертой , Проверьте это:

http://en.wikipedia.org/wiki/User_agent#Format

http://tools.ietf.org/html/rfc1945#section-3.7

Возможно, Apache решает, что ваша строка является недопустимой строкой User-Agent, и не учитывает ее. Попробуйте изменить

Android app1.0

до

Android-app/1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...