tomcat apache 8 服务器(端口 - 8080)上的 Pentaho API 在通过不同的 Web 应用程序(react JS,端口 - 3000)调用时出现 COR 问题

Pentaho APIs on tomcat apache 8 server(port - 8080) giving CORs issues when called through different web app(react JS, port - 3000)

我被卡住了,因为我必须调用 pentaho API 从 reactJS 应用程序验证用户。两者都在我的本地机器上。到目前为止我尝试过的事情:

a) 在 reactJS 配置文件中添加代理 - package.json。 问题 - 代码命中 localhost:3000 而不是 localhost:8080

b) 在没有安全保护的情况下启动 Google chrome 并添加 header。 link 建议以上 2 -

c) 修改 pentaho 端的 web.xml 文件并添加 cors jar 文件。 问题 - 我从 Maven 存储库下载了 cors jar 文件。添加了相应的过滤器。这些更改后服务器未启动。 link - https://www.ease2code.com/embedding-pentaho-cde-dashboard-in-web-application/

版本 - Pentaho 8.3 和 tomcat 8

错误 - CORS 策略已阻止从源 'http://localhost:3000' 访问位于 'http://localhost:8080/pentaho/j_spring_security_check' 的 XMLHttpRequest:请求的资源上不存在 'Access-Control-Allow-Origin' header。

这终于奏效了。我们需要添加 2 个 jar 文件:

  1. cors-filter-2.6
  2. java-属性-utils-1.13

然后更新 webapps\pentaho\WEB-INF\web.xml 文件以读取这些 jar。

        <filter-name>CORS</filter-name>

        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>

    <init-param>

    <param-name>cors.allowOrigin</param-name>

   <!-- Update specific domains instead of giving to all -->

    <param-value>*</param-value>

    </init-param>

    <init-param>

    <param-name>cors.supportsCredentials</param-name>

    <param-value>false</param-value>

    </init-param>

    <init-param>

    <param-name>cors.supportedHeaders</param-name>

    <param-value>accept, authorization, origin</param-value>

        </init-param>

 <init-param>

    <param-name>cors.supportedMethods</param-name>

            <param-value>GET, POST, HEAD, OPTIONS</param-value>

 </init-param>

    </filter>

    <filter-mapping>

        <filter-name>CORS</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

重新启动 pentaho 服务器。它会起作用