我有一個應用程序,它有一個web和android組件,我希望識別他們每個人。爲此,我明確地將HTTP頭中的用戶代理設置爲特定於android的內容。但是Apache並沒有將用戶代理傳遞給我。如果我使用同一臺機器上的瀏覽器訪問同一個URL,那麼當我轉儲包含HTTP_USER_AGENT的$ _SERVER數組時,我會在php代碼中獲得完整的頭文件列表。但是我對android客戶端一無所知(除了SCRIPT_NAME和REQUEST_TIME)。 Apache是否過濾了一些東西?HTTP頭與Android和PHP與Apache
我看到,如果我不在Java代碼中設置標題,則不會傳遞任何消息。我使用tcpdump並將以下內容看作傳遞給服務器的User-Agent。
User-Agent: Android app1.0\r\n
任何幫助,非常感謝。
編輯:這是我用來在我的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
您正在使用的HttpClient和HttpPost/HTTPGET爲您的網站請求?你如何添加標題?顯示一些代碼,說明如何將頭添加到請求中,並且我們可能會得到更清晰的想法。 – Rich 2011-05-10 16:18:16
Apache本身不會過濾,但有一些安全模塊可以清理頭文件,mod_security。 – 2011-05-10 16:28:10
@Rich - 我已將我用的代碼添加到原始問題中。除了一個愚蠢的拼寫錯誤,我很確定我將User-Agent添加到標題中,就像我在tcpdump中看到的那樣。 – user220201 2011-05-10 16:32:27