2011-02-05 2 views
4

Как браузер управляет файлами cookie? Я имею в виду, нужно ли создавать cookie-объект?Как браузеры обрабатывают файлы cookie?

Мотивация: я хочу войти на сайт cookie. В настоящее время куки - это не только имя и ценность - они также содержат домен, дату истечения срока действия и т. Д.

Мне нужен ответ в Java.

+0

Нет, сервер создает Cookie объект, и браузер вставляет его в ее печенье. – Daniel

ответ

3

Всякий раз, когда браузер получает ответ, содержащий конкретный заголовок cookie, он создает файл cookie.

С Java Servlet API вы можете создать кук:

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

При последующих запросах браузер отправляет куки на сервер. Опять же, с помощью API сервлета вы можете получить текущие файлы cookie, позвонив по телефону request.getCookies()

0

Предположим, что вы работаете на сервере и работаете в среде Servlet (Tomcat, Jetty), то вы хотите посмотреть на getCookies и аналогичные установите cookie в ответ.

0

Если вы хотите автоматизировать просмотр веб-сайта с точки зрения клиента, вместо того, чтобы делать это вручную, я бы использовал фреймворк вроде JWebUnit, который основан на HtmlUnit, но даже более высокий уровень и проще в использовании. Вам не нужно беспокоиться о файлах cookie, но у вас есть доступ к ним, если вам нужно их изучить.

Я знаю, что это напрямую не отвечает на ваш вопрос о том, как браузер обрабатывает файлы cookie, но я надеюсь, что это поможет!

1

Если вы хотите создать мини-браузер с состоянием cookie с использованием встроенного API java.net, вы можете ознакомиться с этим руководством: 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(); 
+0

Я пробовал в соответствии с учебником, но он не работает. Но у меня есть путаница, первый параметр requestproperty - это просто «Cookie». Что они пытаются сказать этой строкой. Это только строка или имя файла cookie или что ???? –

+0

Это постоянный ключ, указывающий, что такое второй аргумент. Вы можете указать несколько файлов cookie, разделив пары ключ = значение на «;». Для справки по этому методу см. [URLConnection] (http://download.oracle.com/javase/1.4.2/docs/api/java/net/URLConnection.html#setRequestProperty (java.lang.String, java.lang .String)). –