Pentaho CDA:基本身份验证和CORS冲突

时间:2017-06-21 15:13:29

标签: rest tomcat cors pentaho basic-authentication

使用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(预检)请求。

1 个答案:

答案 0 :(得分:0)

在Apache-Tomcat上使用Ngnix作为反向代理并解决了此CORS错误