簡體   English   中英

如何從Java客戶端獲取httponly cookie?

[英]How to get httponly cookies from a Java client?

如何獲取httponly cookie? 我應該使用什么工具org.apache.http或jsoup,可能是url連接...請任何人給我示例。 我嘗試使用jsoup獲取cookie,但是jsoup不返回httponly cookie。 謝謝!!!

您可以使用在Java Cookie處理中引用的java.net.CookieHandler

作為直接從http://www.hccp.org/java-net-cookie-how-to.html取得的示例:

從響應中獲取Cookie:

打開與服務器的java.net.URLConnection

URL myUrl = new URL("http://www.hccp.org/cookieTest.jsp");
URLConnection urlConn = myUrl.openConnection();
urlConn.connect();

遍歷響應頭以查找cookie:由於服務器可能在單個請求中設置多個cookie,因此我們將需要遍歷響應頭,以查找所有名為“ Set-Cookie”的標頭。

String headerName=null;
for (int i=1; (headerName = uc.getHeaderFieldKey(i))!=null; i++) {
    if (headerName.equals("Set-Cookie")) {                  
    String cookie = urlConn.getHeaderField(i);               
    ...                                                      

從cookie字符串中提取cookie名稱和值:getHeaderField(int index)方法返回的字符串是一系列name = value,用分號(;)分隔。 第一個名稱/值配對是我們感興趣的實際數據字符串(即“ sessionId = 0949eeee22222rtg”或“ userId = igbrown”),后續的名稱/值配對是元信息,我們將使用它們來管理cookie的存儲(到期時等)。

cookie = cookie.substring(0, cookie.indexOf(";"));
String cookieName = cookie.substring(0, cookie.indexOf("="));
String cookieValue = cookie.substring(cookie.indexOf("=") + 1, cookie.length());

基本上就是這個。 現在,我們有了cookie名稱( cookieName )和cookie值( cookieValue )。

請任何人給我榜樣

這是Jsoup的一個。

樣本代碼

Response response;
try {
    response = Jsoup //
            .connect("https://httpbin.org/cookies/set?http-only-cookie=test;%20httponly") //
            .ignoreContentType(true) //
            .execute();

    System.out.println(response.cookies());
} catch (IOException e) {
    throw new RuntimeException(e);
}

OUTPUT

{http-only-cookie="test\073 httponly"}

暫無
暫無

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

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