2010-03-23 125 views
2

我有一個未簽名的Java applet與同一主機進行交互。每次點擊頁面中的元素時,applet(這是我無法控制的第三部分applet)應該從URL加載數據。我說應該的,因爲對於某些文件,我得到java.security.AccessControlException:訪問被拒絕(java.util.PropertyPermission http.agent讀取)

java.security.AccessControlException:訪問被拒絕(java.util.PropertyPermission http.agent讀)

和其他一些正確加載文件。所有文件都可以正確讀取並從Web服務器上下載,並且它們是非常簡單的文本文件。

我還發現,在某些情況下,先前返回錯誤的文件現在已加載並繼續加載,因此似乎以某種方式涉及緩存。

你們有沒有關於這裏發生了什麼的想法?行爲似乎是絕對隨機的,我無法對此進行調試。注:我使用這個小程序來執行許多其他「單次鏡頭」文件訪問,並且它從來沒有給我任何問題。我唯一明顯的區別是,現在我通過一個javascript事件「按需」執行此操作。

可能是什麼原因,在小程序的Java或其他地方?

回答

2

這是Java VM中的一個錯誤。 http://bugs.sun.com/view_bug.do?bug_id=6593830這個問題似乎只發生在一個小程序中。 Java Web Start似乎不受影響。

+0

我得到一個類似的問題與java web開始 - 從只有一些客戶端,而不是其他人:'java.lang.securityexception拒絕訪問允許的URL子路徑外。我試圖訪問同一臺服務器上的內容。 – 2011-11-18 13:45:45

+0

這是一個SecurityException,但它是另一個例外。我沒有看到我可以提供任何提示。 – Horcrux7 2011-11-18 18:29:20

+0

好吧,我發現了一個修復java.lang.securityexception的問題 - 正如它的文本提示 - 我將它試圖訪問的數據移動到jnlp和jar文件所在的目錄中(以及它的子目錄)。哎呀知道我爲什麼不被允許首先訪問我自己的主機,但嘿! – 2011-11-23 10:26:37

0

小程序已損壞。它試圖訪問沙箱安全規則所說的屬性的值。

向applet的供應商報告此問題,並要求提供錯誤修復或解決方法。

1

一些httphttps URL處理程序使用http.agent設置User-Agent標題。

處理這個問題的正確方法是將此特定系統屬性的副本用於是否授予權限(與許多其他權限一樣)。但是,所做的是將它添加到applet和JNLP應用程序的權限中。這意味着如果通過其他機制(例如通過LiveConnect從JavaScript進行調用)加載任何代碼,它將不具備權限,並且可能會失敗。如果該項目已被緩存,那麼不需要編寫HTTP頭部,因此不需要讀取該屬性。

相關問題