请求 Kylo API 时如何修复 cross-origin 错误

How to fix cross-origin error when request to Kylo API

我在名为 kyloserver 的服务器中有一个 Kylo 沙箱的 运行 实例。我正在尝试从我的网站 运行 in localhost:8080 访问 Kylo API。

我尝试使用搜索 API 调用 url:

http://kyloserver:8400/proxy/v1/feedmgr/search?q=mary&rows=20&start=0

并像这样在 header 中使用基本身份验证 (javascript):

Authorization: 'Basic ' + btoa(this.username + ":" + this.password)

响应是:

Failed to load http://kyloserver:8400/proxy/v1/feedmgr/search?q=mary&rows=20&start=0: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. The response had HTTP status code 403.

如果我通过登录 UI 使用 swagger,我可以正确地获得结果。

如何才能成功访问API?

(Kylo 版本:0.8.3)

谢谢。

Kylo 默认禁用 CORS 支持。您需要编写一个插件来使用启用 CORS 的插件覆盖默认配置: https://github.com/Teradata/kylo/blob/v0.8.4/services/service-app/src/main/java/com/thinkbiganalytics/server/DefaultWebSecurityConfigurer.java

最后我决定创建一个托管在与 Kylo 相同的服务器上的代理 Web 服务,它只是将请求从 Web 重定向到 Kylo 服务。