2011-11-03 73 views
1

而对于我的生活,我无法弄清楚为什么我无法访问该文档的cookie作为applet的来源。相同的页面,相同的IP地址。当我通过Java实际建立连接时,我看到cookies被发送(在wireshark中),所以我知道他们在那里。Java applet获取文档cookie?

有没有人有任何替代方法尝试从Java访问文档cookie?我在互联网上搜索过,除了getRequestProperty()方法之外似乎找不到任何可行的东西!

我有以下applet代码:

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?否则,它会将我在当前程序窗口的背景下...

+0

是饼干头名 “设置Cookie:” 不知道...... – r0ast3d

+0

嗯,也许是浏览器把一个包装器围绕Java连接,包装器正在处理cookie,所以Java连接没有看到它们?尝试打印出你*做*得到的所有请求属性(通过'getRequestProperties()'),这可能会帮助你弄清楚发生了什么。 –

+0

Hrm,它似乎没有回报任何东西给我!我想知道为什么这是... – Fitblip

回答

1
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]); 
    }