[英]java.policy allowing connection to port 80
我已将以下内容添加到 /home/user/.java.policy
// https://docs.oracle.com/javase/8/docs/technotes/guides/security/PolicyFiles.html
grant {
permission java.net.SocketPermission "169.254.170.2:80", "connect";
};
据我所知,这应该允许我从 URL 中获得。
这是我的代码:
URL url = new URL("http://169.254.170.2/v2/credentials/uuid");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) {
for (String line; (line = reader.readLine()) != null;) {
logger.error(line);
}
}
我仍然最终得到一个java.net.BindException: Permission denied
from the call to url.openStream:
2021-06-02T17:12:52.010+10:00 java.net.BindException: Permission denied
2021-06-02T17:12:52.011+10:00 at java.base/sun.nio.ch.Net.connect0(Native Method)
2021-06-02T17:12:52.011+10:00 at java.base/sun.nio.ch.Net.connect(Net.java:574)
2021-06-02T17:12:52.011+10:00 at java.base/sun.nio.ch.Net.connect(Net.java:563)
2021-06-02T17:12:52.011+10:00 at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
2021-06-02T17:12:52.011+10:00 at java.base/java.net.Socket.connect(Socket.java:648)
2021-06-02T17:12:52.012+10:00 at java.base/java.net.Socket.connect(Socket.java:597)
2021-06-02T17:12:52.012+10:00 at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
2021-06-02T17:12:52.012+10:00 at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
2021-06-02T17:12:52.012+10:00 at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
2021-06-02T17:12:52.012+10:00 at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
2021-06-02T17:12:52.012+10:00 at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
2021-06-02T17:12:52.013+10:00 at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
2021-06-02T17:12:52.013+10:00 at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1261)
2021-06-02T17:12:52.013+10:00 at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1194)
2021-06-02T17:12:52.013+10:00 at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1082)
2021-06-02T17:12:52.013+10:00 at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1016)
2021-06-02T17:12:52.013+10:00 at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1600)
2021-06-02T17:12:52.014+10:00 at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1528)
2021-06-02T17:12:52.014+10:00 at java.base/java.net.URL.openStream(URL.java:1167)
是否需要做其他事情才能让我向端口 80 发送请求? 我正在使用来自https://hub.docker.com/_/openjdk的 Java 15.0.2
这是由于围绕 java 可执行文件的安全工具,而不是由于 Java 本身的任何问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.