Filter怎么利用http請求實(shí)現(xiàn)繞過?很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、夷陵ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的夷陵網(wǎng)站制作公司
http請求繞過Filter的實(shí)例
場景:兩個(gè)web服務(wù)器,A當(dāng)做服務(wù)端,B為客戶端,B通過Hessian遠(yuǎn)程訪問A。A上加了session過期filter,通過用戶信息檢查session是否過期。這種情況下,Hessian會(huì)先發(fā)給filter,filter讀不到用戶信息就會(huì)認(rèn)為過期了,引起錯(cuò)誤。
解決方案:讓hessian請求繞過session過期filter。
filter配置中,不能加exclusion,所以需要用初始化參數(shù)給出不過濾的請求。本例中不過濾的格式為>/SarService。
exclusions /SarService loginFilter org.sigsit.vinca.sar.filter.LoginFilter loginFilter /*
Filter類中,在init中讀取exclusions,并在doFilter中判斷。如下:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 由于 session 屬于 HTTP 范疇,故需要向下轉(zhuǎn)型成 HttpServletRequest 類型 HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res=(HttpServletResponse)response; HttpSession session = req.getSession(); // 取得 session String username = (String) session.getAttribute("username"); StringBuffer fileURL = req.getRequestURL(); if(fileURL.indexOf(this.exclusions)!=-1){ chain.doFilter(request, response); } else{ //原來的處理代碼 } } public void init(FilterConfig config) throws ServletException { // TODO Auto-generated method stub this.exclusions=config.getInitParameter("exclusions"); }
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。