2011-09-06 62 views
3

我正在創建一個java applet來收集和處理來自其他網站的一些數據。小程序是未簽名的,據我瞭解,由於安全原因,對其他站點的訪問被阻止。java.net.SocketPermission - 奇怪的行爲

但是,似乎至少有一個其他網站沒有被封鎖。我想這樣的代碼:

package where; 

import java.awt.BorderLayout; 
import java.awt.Container; 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.URL; 
import javax.swing.JApplet; 
import javax.swing.JLabel; 
import javax.swing.JTextArea; 

public class TestPermissions extends JApplet { 
JTextArea txt = new JTextArea(); 
public void openURL(String site) { 
    txt.append(site+": "); 
    try { 
     URL url = new URL(site); 
     BufferedReader in = new BufferedReader(
       new InputStreamReader(
         url.openStream())); 
     txt.append("Succes\n"); 
    } catch (Exception e) { 
     txt.append("Failed\n"); 
     txt.append(e.getMessage()+"\n"); 
     System.err.println(e.getMessage()); 
    } 

} 
public void init() { 
    openURL("http://www.buienradar.nl/"); 
    openURL("http://buienradar.nl/"); 
    openURL("http://www.google.nl/"); 
    openURL("http://whatismyipaddress.com/"); 
    openURL("http://www.google.com/"); 
    openURL("http://www.nrg.eu/"); 
    openURL("http://www.ecn.nl/"); 
    Container cp = getContentPane(); 
    cp.setLayout(new BorderLayout()); 
    cp.add(BorderLayout.CENTER, txt); 
} 
} 

,其結果是:

http://www.buienradar.nl/: Failed 
access denied (java.net.SocketPermission www.buienradar.nl:80 connect,resolve) 
http://buienradar.nl/: Failed 
access denied (java.net.SocketPermission buienradar.nl:80 connect,resolve) 
http://www.google.nl/: Failed 
access denied (java.net.SocketPermission www.google.nl:80 connect,resolve) 
http://whatismyipaddress.com/: Succes 
http://www.google.com/: Failed 
access denied (java.net.SocketPermission www.google.com:80 connect,resolve) 
http://www.nrg.eu/: Failed 
access denied (java.net.SocketPermission www.nrg.eu:80 connect,resolve) 
http://www.ecn.nl/: Failed 
access denied (java.net.SocketPermission www.ecn.nl:80 connect,resolve) 

我明白了「拒絕訪問」 repsonses,但爲什麼訪問授予 http://whatismyipaddress.com

我歡迎答案或提示或建議以供參考。

親愛的Dacwe,

感謝您的迴應。

我的服務器名稱不是whatismyipaddress.com。

我把小應用程序的服務器上: http://www.vitanova.co.nr/test/TestPermissions.html

代碼爲:

http://www.vitanova.co.nr/test/where/TestPermissions.java

除了把另一個小程序,從whatismyipaddress.com獲取數據的服務器上(實際上是PC的預定位置),並嘗試從該位置的buienradar獲取天氣數據,後者由於小程序的安全性而失敗。

http://www.vitanova.co.nr/test/ReadURL.html

的代碼爲:

http://www.vitanova.co.nr/test/where/ReadURL.java

回答

0

參見What Applets Can and Cannot Do

我能想到的一些東西,可能是錯的:

  • 你的服務器的名稱爲whatismyipaddress.com(小程序可以「給家裏打電話」)
  • 錯誤在你的測試代碼(你有更多的代碼? )
  • JVM缺陷(不太可能)
+0

我的服務器名稱不是whatismyipaddress.com。我把小程序放在服務器上:[link](http://www.vitanova.co.nr/test/TestPermissions.html) – jacquesb

+0

謝謝,我在我的問題中添加了更多信息。 – jacquesb

0

Crossdomain.xml無法解決您的問題。您必須簽署您的小程序才能使其適用於跨網域。