나는 다음과 같은 HttpGet() 함수가 있습니다Java 애플릿 AccessControlException가 (아파치 HttpClient를)
HttpGet request = new HttpGet(url);
request.setHeader("User-Agent", userAgent);
request.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
request.setHeader("Accept-Language", "en-US,en;q=0.5");
if (!cookies.equals(""))
request.setHeader("Cookie", this.cookies);
for (Map.Entry<String, String> header : tempHeaders.entrySet())
{
request.setHeader(header.getKey(), header.getValue());
}
tempHeaders.clear();
HttpResponse response = client.execute(request);
이 기능은 아파치 HttpClient를 래핑 브라우저() 클래스의 일부입니다. 애플릿 뷰어에서 애플릿을 실행하면 모든 것이 잘 동작합니다.
이java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:80" "connect,resolve")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at sun.plugin2.applet.SecurityManagerHelper.checkConnectHelper(Unknown Source)
at sun.plugin2.applet.AWTAppletSecurityManager.checkConnect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:117)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:178)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
**at vidinstant.HttpBrowser.Get(HttpBrowser.java:60)**
at vidinstant.ServerThread$1.run(ServerThread.java:201)
at vidinstant.ServerThread$1.run(ServerThread.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at vidinstant.ServerThread.GetLink(ServerThread.java:196)
at vidinstant.ServerThread.run(ServerThread.java:95)
당신은 예외의 "소스"브라우저 클래스의 라인 60에 있음을 알 수
, 더 정확하게, 그것은 이것이다 : 나는 페이지에 애플릿을 삽입 할 때, 나는 다음과 같은 예외를 얻을 코드의 위의 인용에서 라인 : 그것에 :
HttpResponse response = client.execute(request);
내가 자체 서명 된 매니페스트 파일이 라인 "모든 권한 권한"이 .JAR와 애플릿을 가지고있다.
왜이 예외가 발생하며 액세스가 거부 되었습니까? 브라우저에서 애플릿을 실행하는 사용자는 허용 및 차단 안 함을 클릭하지만 여전히 작동하지 않습니다. 아파치의 라이브러리 .jars도 서명해야합니까? 그들의 명단에 "모든 허락"이 있어야합니까? 사용자가 Java 정책 파일을 조작하지 않고 이러한 기능을 실행하는 권한을 얻는 방법?