2011-11-03 64 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]); 
    }