使用Tomcat 8查询Pentaho BI服务器7的Web应用程序,我面临一些问题。
首先要避免CORS(跨域资源共享)问题我在tomcat的web.xml配置文件中添加了CORS过滤器:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<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,Authorization</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
之后,一切都很好,直到有必要通过Pentaho CDA(Pentaho社区数据访问)获得一些资源。我在插件设置文件中添加了一个Basic Auth标头和一行(pentaho-solutions / system / cda / settings.xml):
<allow-cross-domain-resources>true</allow-cross-domain-resources>
我的aplication所做的每个请求都会出现同样的错误:
XMLHttpRequest无法加载http://localhost:8080/pentaho/plugin/cda/api/doQuery?path=/whatever/dashboard.cda&dataAccessId=mdxGetSmth。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://127.0.0.1:xxx”访问。响应的HTTP状态代码为401。
有趣的是,同样的查询在Postman中工作(当然使用相同的Basic auth标头)只是因为Postman跳过了OPTIONS(预检)请求。
答案 0 :(得分:0)
在Apache-Tomcat上使用Ngnix作为反向代理并解决了此CORS错误