Java-апплет получает файлы cookie документа? - PullRequest
1 голос
/ 04 ноября 2011

И я не могу понять, почему не могу получить доступ к файлам cookie документа для определения происхождения апплета.Та же страница, тот же IP-адрес.Когда я на самом деле устанавливаю соединение через Java, я вижу отправку файлов cookie (в wireshark), поэтому я знаю, что они там есть.

У кого-нибудь есть альтернативные способы доступа к файлам cookie документа из Java?Я ходил по Интернету и, похоже, не нашел ничего, что могло бы работать, кроме метода getRequestProperty()!

У меня есть следующий код апплета:

import java.applet.*;
import java.net.*;
import java.util.*;
import java.io.*;
import netscape.javascript.*;

public class test extends Applet {
    public void init() {
    try {
        URL url = new URL("http://10.0.0.5/java/test.html");            
        String inputLine;
        URLConnection conn = url.openConnection();

        System.out.print("Cookies:\n");
        String m = conn.getRequestProperty("Cookie");
        // Returns null :-/
        System.out.println(m);

        // Read page content => works fine... (sends cookie)
        //BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        //while ((inputLine = in.readLine()) != null) 
        //    System.out.println(inputLine);
        //in.close();        
    } catch (Exception e) { 
        System.out.println("Error :(");
        System.out.println(e.getMessage());
    }
    String alert = "alert(document.cookie);";
    JSObject win = (JSObject) JSObject.getWindow(this);
    win.eval(alert);
    }
}

Также есть ли способ получить окно JSObject для моего URLConnection?В противном случае он устанавливает меня в контексте текущего окна апплета ...

1 Ответ

1 голос
/ 24 июля 2012
HttpURLConnection.getRequestProperty

возвращает только то, что вы добавили к нему через addRequestProperty, которое будет отправлено, когда соединение установлено через соединение. Заголовки ответа могут содержать заголовки Cookie или Set-Cookie, которые могут дать вам некоторое представление о файлах cookie с сервера.

Чтобы получить куки для страницы вашего апплета:

  1. 1. Определите функцию javascript, например, следующую: она должна быть частью страницы, содержащей ваш апплет.

    function getDocumentCookies() 
    {
      return document.cookie;
    }
    
  2. se jsobject для вызова, например:

    private String getDocumentCookies()
    {
      JSObject window = (JSObject)JSObject.getWindow(this);
      return window.call ("getDocumentCookies", new String[0]);
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...