reactjs - 如何在 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>
解决方案
转到此位置(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>
推荐阅读
- excel - 如何复制活动单元格并将它们粘贴到已打开的新工作簿中?
- talend - Talend 中的多个 tkafkainfput
- python - 如何修复线程池执行器的错误
- java - 清单不允许用于 android
- java - 项目不能添加到列表中;
- android - 如何在 CoordinatorLayout 中使用 layout_below
- windows - accessToken 对于从 Windows 服务器连接到 Azure DevOps 部署组无效
- java - 实现 Spring Batch 的应用中 CPU 使用率高
- javascript - 如何在循环中设置状态
- python - 创建一个将分数作为参数输出到打印函数的函数