gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:01 29 4
gpt4 key购买 nike

我有一个 Spring-MVC 网络应用程序 (3.0.5-RELEASE),它需要从不同子域上的另一个网络应用程序访问 JSON 网络服务(通过 AJAX 从客户端/浏览器)。

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

  1. 编写一个代理请求的简单 Controller ,使用 Apache Commons HttpClient 处理请求。从而克服大部分浏览器的跨站/跨域请求安全限制

  2. 在服务器端实现 JSONP 服务(当调用我们自己的 JSON 服务时)——并非总是可行

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

和/或

是否有图书馆可以帮我处理这个问题?因此,我不必自己编写所有 HttpClient 代码 - 代码不多,但我想知道我是否(糟糕地)重新发明了轮子。

最佳答案

我经常不得不使用第三方网络服务 (API),正如您提到的,JSONP 并不总是一个选项。这就是我的设计方式:

  1. 如果 API 是以用户为中心的,它必须提供一个 jsonp 接口(interface),这就是我将使用的接口(interface)。以用户为中心意味着您无法感知任何调用 API 的理由,对响应进行一些计算,可能是调用您的 ajax 服务之一,然后组合响应并显示给用户。

  2. 如果我的用例包括调用 API,然后根据响应执行操作,例如从我的应用程序调用其他服务、组合数据然后将其显示给用户,我宁愿不要在浏览器中执行此操作.我会改为使用 RestTemplate 并对服务进行后端 api 调用。在这种情况下,没有跨域限制。

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

希望这对您有所帮助。

关于java - 实现 HTTP 代理以克服跨站点 AJAX 请求限制(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5086123/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com