加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 实现HTTP代理以克服跨站点AJAX请求限制(?)

发布时间:2020-12-15 01:27:02 所属栏目:大数据 来源:网络整理
导读:我有一个Spring-MVC webapp(3.0.5-RELEASE),它需要从另一个子域(通过AJAX从客户端/浏览器)访问另一个webapp的JSON webservices. 我过去通过以下方式解决了这个问题: 编写一个代理请求的简单控制器,使用Apache Commons HttpClient处理请求.因此,克服了大多数

我有一个Spring-MVC webapp(3.0.5-RELEASE),它需要从另一个子域(通过AJAX从客户端/浏览器)访问另一个webapp的JSON webservices.

我过去通过以下方式解决了这个问题:

>编写一个代理请求的简单控制器,使用Apache Commons HttpClient处理请求.因此,克服了大多数浏览器的跨站点/跨源请求安全限制
>在服务器端实现JSONP服务(在调用我们自己的JSON服务时) – 并非总是可行

在JSONP不可能的情况下,是否有更好的方法(1.)?

和/或

有没有一个库可以为我处理这个?所以我不必自己编写所有的HttpClient代码 – 它不是很多代码,但我想知道我是否(非常)重新发明了这个轮子.

最佳答案
我经常不得不使用第三方Web服务(API),正如您所提到的,JSONP并不总是一种选择.这就是我设计的方式:

>如果API是以用户为中心的,它必须提供一个jsonp接口,这就是我将要使用的.以用户为中心意味着您无法理解调用API的任何理由,使用响应进行一些计算,可能会调用您的ajax服务之一,然后组合响应并向用户显示.
>如果我的用例包括调用API,然后对响应进行操作,例如从我的应用程序调用其他服务,组合数据然后将其显示给用户,我宁愿不在浏览器中执行此操作.我宁愿使用RestTemplate并对服务进行后端api调用.在这种情况下,没有跨域限制.

使用服务器代理绕过jsonp的唯一情况是,您创建的产品允许人们构建自定义插件,页面上托管的插件,但需要对应用程序开发人员服务器进行Ajax调用.这是一个非常复杂的案例! (例如,看看Apigee如何围绕现有网址创建Public Facing REST API,或者Zendesk如何允许您开发应用程序)

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读