0
我正在使用瀏覽器和jetty/apache httpclient訪問一個網站(我隱藏起源網站名稱,因爲它違背了策略)。Jetty客戶端http錯誤代碼412
該網站與網頁瀏覽器正常工作。
使用API我能夠登錄到網站,獲取會話cookie JSESSIONID和主頁html內容。但之後,當我提交任何形式或從HTML調用鏈接我收到HTTP錯誤代碼412(前提條件失敗)。
我明白這個錯誤是由於在客戶端頭問題。我設置了瀏覽器中的所有頭文件(使用chrome瀏覽器中的inspect元素進行檢查)。我仍然有同樣的錯誤。
我無法追查哪個標題導致問題。
下面是從瀏覽器 請求頭頁眉
- 接受:text/html的,應用/ XHTML + xml的,應用/ XML; Q = 0.9,圖像/ WEBP,/; Q = 0.8
- 接受編碼:gzip,緊縮
- 接受語言:EN-GB,EN-US; q = 0.8,連接; q = 0.6
- 緩存控制:最大年齡= 0
- 連接:保持活着
- 的Content-Length:318
- 內容類型:應用/ X WWW的窗體-urlencoded
- 曲奇:語言= en_IN; __gads = ID = 14c64d8f9fd7de54:T = 1424658276:S = ALNI_Mba1kvJO4mLo7R-T2jUJE9zCYck5A; SLB_Cookie = ffffffff09461c2d45525d5f4f58455e445a4a422971; JSESSIONID = 36m4Oo6dCML_Wvx-Wgmm9rtLh9mbURxnZhWIVwg-zHaNzFQeUt9C -1989013783!; _ga = GA1.3.379900459.1428120216
- 主機:www.irctc.co.in
- 產地:https://www.example.com
- 的Referer:https://www.example.com/context/home
- 升級不安全-要求:1
- 的User-Agent:Mozilla的/ 5.0(Windows NT的10.0; WOW64)爲AppleWebKit/537.36(KHTML,例如Gecko)鉻/ 44.0.2403.157 Safari瀏覽器/ 537.36
相同的報頭我從碼頭客戶端設置。
Request request = httpClient.newRequest(url);
request.method(HttpMethod.POST);
request.agent(USER_AGENT);
request.accept("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
request.header(HttpHeader.REFERER,"https://www.example.com/context/home");
request.header(HttpHeader.ACCEPT_ENCODING, "gzip, deflate");
request.header(HttpHeader.ACCEPT_LANGUAGE, "en-GB,en-US;q=0.8,en;q=0.6");
request.header(HttpHeader.CACHE_CONTROL, "max-age=0");
request.header(HttpHeader.CONNECTION, "keep-alive");
request.header(HttpHeader.CONTENT_TYPE, "application/x-www-form-urlencoded");
request.header(HttpHeader.HOST, "www.example.com);
for (Map.Entry<String, String> entry : params.entrySet()){
request.param(URLEncoder.encode(entry.getKey(), "UTF-8"), URLEncoder.encode(entry.getValue(), "UTF-8"));
if(!StringUtils.isEmpty(content)){
content+="&";
}
content+=URLEncoder.encode(entry.getKey(), "UTF-8")+"="+URLEncoder.encode(entry.getValue(), "UTF-8");
}
request.header(HttpHeader.CONTENT_LENGTH, ""+content.length());
我看到JSESSIONID和SLB_Cookie出現在請求中。由於該網站不在我們的控制範圍內,我實在無法追蹤到底是什麼問題。
請幫我解決這個問題。讚賞任何指針來解決客戶端問題。有什麼辦法可以確定哪個頭部導致這個問題。
看起來像是發佈請求內容 - 長度不是明確要求的。所以它似乎沒有與內容長度 – user2672763
問題我看到這個問題可能與JSF viewstate參數。我正在提交的表單包含javax.faces.ViewState隱藏參數。如果從提交中刪除此參數,我會返回相同的頁面作爲迴應。有了這個參數,我得到了412.仍然問題是相同的形式submisison與瀏覽器工作正常,但不是從jetty/apache httpclient – user2672763