【问题标题】:Can I violate the same-origin policy with a Java applet我可以使用 Java 小程序违反同源策略吗
【发布时间】:2013-10-02 23:27:49
【问题描述】:

我需要请求一些东西并从其他域获取信息。我知道由于相同的来源政策,javascript 无法做到这一点。我的另一个选择是通过我的服务器发出代理请求。我不希望请求来自我服务器的 IP,也不想为我的服务器增加额外的负载,我希望客户端这样做。

是否可以使用 Java 小程序来执行此操作?手动配置安全设置不是问题。

【问题讨论】:

    标签: java applet cross-domain same-origin-policy


    【解决方案1】:

    Java 小程序确实实现了相同的源策略,与 Flash 的方式非常相似。如果目标服务器没有正确定义的可公开访问的 crossdomain.xml,Java 将阻止基于 applet 的跨域调用。

    一个简单的 crossdomain.xml 如下所示:

    <?xml version="1.0"?>
    <cross-domain-policy>
      <allow-access-from domain="*" />
    </cross-domain-policy>
    

    【讨论】:

    • 啊,这容易多了。我曾经读到你可以签署一个 Java 小程序来让它执行跨域请求。我可以利用 crossdomain.xml 来使用 jQuery 获取和操作远程数据,以及使用 crossdomain.xml 中定义的来源来操作 iFrame 吗?
    • 不,对于 ajax 请求,有 CORS spec 或 JSONP(或代理)。对于跨域窗口通信,有Web Messaging API
    • 所以如果我想请求和操作其他网页(跨域),我最好的办法是使用带有 crossdomain.xml 的 Java 小程序
    • 我绝不会建议将 Java(甚至 Flash)客户端用于此类事情。安全方面存在潜在的严重问题。就 Java 而言,applet 真是一团糟。如果您的用户群很少,您可能会发现自己对支持问题感到非常沮丧和不知所措,尤其是对于 OS X 用户。如果您正在构建一个基于 Flash 或 Java 的新的基于 Web 的应用程序,那么您肯定走错了路。
    • Nicholous 谢谢。您还建议如何操纵外国网页?我实际上是在登录(或使用 API,如果可用)并从远程 Web 服务聚合数据并解析信息以标准格式将其显示给用户。正如我所说,我不想给我的服务器增加额外的负载,或者如果用户滥用服务或不小心点击了 100 次,我的服务器 IP 可能会被禁止,所以我打算使用一个小程序。如果他们禁止自己比禁止我的服务器更好。
    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 2016-11-13
    • 1970-01-01
    • 2015-01-19
    • 2011-11-08
    • 1970-01-01
    相关资源
    最近更新 更多