我正在开发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);
答案 0 :(得分:0)
为了获取数据并绕过CORS,您可能需要使用带有JSONP格式的API
它是一种带填充的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配合使用而设计的,非常适合实时搜刮。
免责声明:我是该程序的作者。