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

Posted

技术标签:

【中文标题】Pentaho CDA:基本身份验证和 CORS 冲突【英文标题】:Pentaho CDA: Basic Authentication and CORS conflict 【发布时间】:2017-11-24 14:06:12 【问题描述】:

在使用 Tomcat 8 查询 Pentaho BI server 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 社区数据访问)获取一些资源。我在插件设置文件(pentaho-solutions/system/cda/settings.xml)中添加了一个基本身份验证头和一行:

<allow-cross-domain-resources>true</allow-cross-domain-resources>

我的应用程序执行的每个请求都会收到相同的错误:

XMLHttpRequest 无法加载 http://localhost:8080/pentaho/plugin/cda/api/doQuery?path=/whatever/dashboard.cda&dataAccessId=mdxGetSmth。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://127.0.0.1:xxx' 不允许访问。响应的 HTTP 状态代码为 401。

有趣的是,相同的查询在 Postman 中运行(当然使用相同的 Basic auth 标头)只是因为 Postman 只是跳过了 OPTIONS(预检)请求。

【问题讨论】:

看看这是否有帮助***.com/questions/28226463/…,或者这个***.com/questions/8069640/… 【参考方案1】:

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

【讨论】:

以上是关于Pentaho CDA:基本身份验证和 CORS 冲突的主要内容,如果未能解决你的问题,请参考以下文章

CORS 和 HTTP 基本身份验证

AngularJS $http、CORS 和 Jersey 的基本身份验证

具有 CORS 和基本身份验证支持的 WCF 自托管数据服务

为啥 Chrome 和 Firefox 使用基本身份验证的 CORS ajax 调用的行为不同?

带有基本 HTTP 身份验证的 CORS

在 Angular 2 中使用基本身份验证预检 CORS 请求