【问题标题】:Applets cannot phone home any longer小程序不能再打电话回家
【发布时间】:2011-12-11 23:02:01
【问题描述】:

我容忍了小程序不能执行任意 HTTP 请求的安全限制。

然而,似乎从大约一年前开始,甚至不可能向这个小程序本身所在的 URL 发出 HTTP 请求。至少如果请求是通过 JavaScript 调用小程序的方法来触发的。

这意味着甲骨文的一些安全人员决定让小程序不再“打电话回家”。有读者可以确认这一政策变化吗?

On my page 我有一个测试小程序,可以使用 JavaScript 进行检测以执行 HTTP 请求。这曾经奏效。然而,从几个月前开始,它就被破坏并以安全违规异常结束。

访问被拒绝(java.net.SocketPermission 91.90.146.25:80 connect,resolve)

此代码显示了执行 HTTP 请求的公共方法:

public class HttpRequestor extends Applet {

  public String sendRequest(String urlstring) {
    String response = "";
    String line = "";
    URL url;
    try {
      url = new URL( urlstring );
      BufferedReader in = new BufferedReader(new InputStreamReader( url.openStream() ));
      while ((line = in.readLine()) != null)
        response += line + "\n";
      return response;
      }
    catch (Exception ex) {
      return ex.getMessage();
      }
   }
}

在 Java 运行时版本 1.6.0_29 上测试

我已经看到this question 的答案,但这并不能回答我的问题:这种行为改变的原因是什么? (而且,我不确定这个问题的解决方案是否也能解决这个问题)。

【问题讨论】:

  • “我不确定这个问题的解决方案是否也能解决这个问题” 除非你尝试过,否则你不会确定,我会忽略这个问题直到您发布结果。
  • 您好 Andrew,我希望解决方案能够奏效。我现在已经更改了代码,通过 AccessController 路由 URL 请求,正如另一个答案中所建议的那样。有用。我的问题是:“这种行为改变的原因是什么”。这仍然是开放的。 (在这次经历之后,我对小程序失去了信心 - 谁知道接下来会发生什么变化 - 并且将切换到同时无处不在的 Ajax 请求。XmlHttpRequest 不会在不破坏一半网络的情况下改变其行为......)。

标签: java javascript security applet


【解决方案1】:

这种行为改变的原因是什么

甲骨文的决定。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2020-05-25
  • 2022-01-21
  • 2013-08-07
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多