微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从第三方获取JSON数据并绕过SOP

如何解决从第三方获取JSON数据并绕过SOP

|| Same Origin Policy阻止我从另一个网站(获得许可)获取所需的JSON数据。我看到一个正在使用JsonpRequestBuilder解决此问题的人,但是我不确定这是否对我来说是最好的解决方案。我想到的唯一其他选择是在我的服务器上有一个中间servlet。 我在这里最好的选择是什么?我对这两种方法都有疑问。使用中介servlet,我担心会引入延迟。使用JsonpRequestBuilder,看来我必须为从另一个站点调用的每个方法创建一个完整的JavascriptObject,尽管我只需要从其中一些方法提取一个值即可。     

解决方法

我不使用Java,但是当我需要跨域聊天时,通常会使用JSONP,并且我确定有人会制作一个可对其进行包装的Java库。它需要在第三方网站上进行更改,但这是一个非常简单的更改。 编辑:听起来那是该库的功能,对不起...但是仍然...这是要走的路:)     ,查看CORS规范。我们正在使用它来通过我们自己的服务器和GWT的devmode Jetty成功规避SOP。     ,您不必“创建完整的JavaScriptObject”,JavaScriptObject实际上只是从Java世界中调用JavaScript的一种手段,因此您只需要一个getter即可获取所需的值,甚至可以返回\“嵌套\”值:
public native String getFoo() /*-{
    return this.nested[0].obj.foo;
}-*/;
实际上是使用JSONP(和JsonpRequestBuilder)还是使用“代理servlet”,仅取决于您需要调用的“服务”的功能:JSONP是JavaScript,而不是JSON,因此服务器必须返回\“ JSONP响应脚本\”,否则您将无法使用JsonpRequestBuilder(同样,如果服务器返回\“ JSONP脚本,您将(安全)使用CORS或代理Servlet \”而不是
application/json
)。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。