如何绕过CORS并从CORS阻止的API获取数据?

时间:2017-04-05 14:23:03

标签: java spring rest spring-boot cors

我正在开发Spring启动应用程序,我遇到了一个要求,我需要请求(获取)已经可以在互联网上使用的API(由某人开发仅用于演示目的)并获取数据。但该API阻止了CORS请求。虽然我可以在浏览器中点击api并看到json响应,但我无法在我的spring java代码中点击API。我得到403禁止例外。无论如何要解决这个问题?谢谢

java代码

String endPoint="www.api.blahblah.com"; (sample only)

RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response= restTemplate.getForEntity(endPoint+userName,String.class);

4 个答案:

答案 0 :(得分:0)

为了获取数据并绕过CORS,您可能需要使用带有JSONP格式的API

JSONP

它是一种带填充的JSON格式,允许您从驻留在与您的域不同的域中的服务器请求数据。

如果您使用的是localhost,则可以使用适合您浏览器的扩展名禁用CORS检查(虽然不建议这样做),但仍然使用外部JSON API。

此处您有Chrome扩展程序来实现此目标: Allow-Control-Allow-Origin: *

我确定你也能与其他浏览器类似。

答案 1 :(得分:0)

浏览器限制设计访问,除非服务提供商通过CORS(或某些替代/ hack,如JSONP)允许访问。

在这种情况下,唯一可行的选择是代理API,即设置您自己的中间服务器,以便在第三方API之间向您的客户端传输数据。

答案 2 :(得分:0)

CORS是W3C规范,允许从浏览器进行跨域通信。您不需要绕过CORS。 您需要传递Same Origin Policy,这是浏览器处理的限制。

我也对此感到困惑,我建议你看一下:https://www.html5rocks.com/en/tutorials/cors/

但是因为您在浏览器之外提出请求SOP并不参与。我认为您出于其他原因收到了禁用的错误代码。

检查端点是否需要一些特殊参数,或者如果您有成功请求的示例,我们可以帮助您了解如何从java重现它。

答案 3 :(得分:0)

您还可以检查开源程序Bypass Cors, 一个可安装的电子应用程序(Windows / Mac / Linux),可让您永久绕过所有CORS限制, 通过允许您设置自己的自定义标题(+来源)。

它是专门为与Web Apps配合使用而设计的,非常适合实时搜刮。

免责声明:我是该程序的作者。