簡體   English   中英

在基於Spring jersey的應用程序中無法訪問Cookie

[英]Can not access cookies in spring jersey based application

我正在開發Spring Security實施模塊,我需要設置和獲取一些Cookie。 我嘗試使用( javax.servlet.http.Cookie )和( javax.ws.rs.core.NewCookie )創建cookie都可以很好地設置cookie,我可以在瀏覽器中看到cookie,但是當我嘗試訪問它們,它的確只給我JSESSIONID,我也需要訪問其他cookie。

這就是我設置Cookie的方式,並且通過兩種方式,我都會在瀏覽器中成功保存Cookie:

Cookie cookieOne = new Cookie("SERVLETCOOKIE", "TESTING COOKIES");

NewCookie cookieTwo = new NewCookie("WSRSCOOKIE", "TESTING COOKIES");

當我嘗試訪問cookie時,我嘗試了如下所示的@Autowired和@Context,但是我只能獲取JSESSIONID cookie。

@Autowired HttpServletRequest request;
and 
@Context HttpServletRequest request;

我正在嘗試訪問以下cookie:

Cookie[] cookieList = request.getCookies();

        if(cookieList !=null && cookieList.length >0){
            for(int i=0;i<cookieList.length;i++){
                Cookie cookie = cookieList[i];

                if(cookie.getName().equals("SERVLETCOOKIE")){
                    String value1 = cookie.getValue();
                    logger.info("cookie found. value ="+value1 );
                }
                if(cookie.getName().equals("WSRSCOOKIE")){
                        String value2 = cookie.getValue();
                        logger.info("cookie found. value ="+value2 );
                    }
                }
            }

如果有人幫助我指出我可以獲取所有其他cookie的方式,那就太好了。

這個問題已經有幾年了。 但是今天我有一個類似的問題。 解決方案是:如果您使用的是Apache http連接器,則似乎不支持jersey cookie api。 嘗試通過Apache api獲取cookie:

public static Cookie getCookie(final ClientRequestContext clientRequestContext, final String key){
    final CookieStore cookieStore = ApacheConnectorProvider.getCookieStore(clientRequestContext.getClient());
    return cookieStore.getCookies().stream().filter(c->c.getName().equals(key)).collect(CollectorUtil.singletonOrNullCollector());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM