浏览器如何处理cookie?

时间:2011-02-05 15:38:16

标签: java web-applications cookies browser

浏览器如何管理Cookie?我的意思是,是否必须创建cookie对象?

动机:我想登录cookie网站。如今,cookie不仅仅是名称和价值 - 它们还包含域名,到期日期等。

我需要Java预期的答案。

4 个答案:

答案 0 :(得分:3)

每当浏览器收到包含特定cookie标头的响应时,它都会创建一个cookie。

使用java servlet API,您可以通过以下方式创建cookie:

Cookie cookie = new Cookie();
cookie.setName(); // setValue, setMaxAge, setPath, etc.
response.addCookie(cookie);

在后续请求中,浏览器将cookie发送到服务器。同样,使用servlet API,您可以通过调用request.getCookies()

来获取当前cookie

答案 1 :(得分:1)

如果您想要使用java.net内置API构建具有cookie状态的迷你浏览器,您可以查看本教程:http://www.hccp.org/java-net-cookie-how-to.html。它显示了Java如何连接到URL,通过响应头来获取cookie,以及如何在请求中设置cookie。

一些示例代码:

    System.out.println("GET: " + url);

    // create and open url connection for reading
    URL urlObj = new URL(url);
    URLConnection conn = urlObj.openConnection();

    // set existing cookies
    conn.setRequestProperty("Cookie", myGetSavedCookies(url));

    // connect
    conn.connect();

    // loop through response headers to set new cookies
    myAddSavedCookies(conn.getHeaderFields().get("Set-Cookie"));

    // read page
    Scanner sc = new Scanner(conn.getInputStream());
    while (sc.hasNextLine())
        out.write(sc.nextLine());
    sc.close();

答案 2 :(得分:0)

假设您正在使用服务器并在Servlet环境(Tomcat,Jetty)中工作,那么您希望在响应中查看getCookies和类似的设置cookie。

答案 3 :(得分:0)

如果您希望从客户端角度自动浏览网站,而不是手动操作,我会使用JWebUnit之类的框架,它基于HtmlUnit,但更高级别更容易使用。您不必担心cookie,但如果您需要检查它们,则可以访问它们。

我知道这并没有直接回答你关于浏览器如何处理cookie的问题,但我希望它有所帮助!