首页 > 解决方案 > 如何在 jasper-server 中为 reactJS 启用 CORS?

问题描述

我正在尝试在我的 reactjs 应用程序中使用 API 作为来自 jasper-server 的获取请求。不幸的是,我收到错误消息“跨源请求被阻止”。

我配置了来自 jasperserver/webapp/web-inf 的 web.xml 文件,还配置了 tomcat web.xml。两者都使用此过滤器进行配置。

<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>http://10.11.200.42:3000</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
 <init-param>
    <param-name>cors.allowed.headers</param-name>
    <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
</init-param>
<init-param>
    <param-name>cors.exposed.headers</param-name>
    <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
 </init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>1800</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

标签: reactjscorsjasperserver

解决方案


转到此位置(jaspersoft\jasperreports-server\apache-tomcat\webapps\jasperserver\WEB-INF)安装 jasperosft 并使用以下代码配置web.xml文件。

      <filter>
      <filter-name>CorsFilter</filter-name>
      <filter-class>com.jaspersoft.jasperserver.api.security.csrf.CorsFilter</filter-class>
      <init-param>
        <param-name>cors.allowed.origins</param-name>
        <param-value>http://localhost:port</param-value>
      </init-param>
      <init-param>
        <param-name>cors.allowed.methods</param-name>
        <param-value>GET,POST</param-value>
      </init-param>
      <init-param>
        <param-name>cors.exposed.headers</param-name>
        <param-value>
          Access-Control-Allow-Origin,Access-Control-Allow-Credentials
        </param-value>
      </init-param>
      <init-param>
        <param-name>cors.support.credentials</param-name>
        <param-value>true</param-value>
      </init-param>
      <init-param>
        <param-name>cors.preflight.maxage</param-name>
        <param-value>1800</param-value>
      </init-param>
    </filter>
    <filter-mapping>
      <filter-name>CorsFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

推荐阅读