如何为SonarQube服务启用CORS

时间:2014-07-07 22:16:22

标签: cors sonarqube

我试图通过jQuery调用Sonar Web服务之一。由于呼叫是跨域进行的,因此Chrome上的呼叫失败,并显示以下错误:   请求的资源上没有“Access-Control-Allow-Origin”标头。 有谁知道如何在SonarQube服务器上启用CORS?我正在使用SonarQube 4.3。我甚至尝试在sonarqube-4.3 \ web \ WEB-INF \ web.xml中添加过滤器,但它没有帮助。任何帮助将不胜感激。

<filter>
  <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>*</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>10</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

谢谢, 萨拉

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。

要摆脱这个,只需在声纳的resetUnhandledResponse文件中将RackFilter的初始化参数 false 设置为web.xml

CORS过滤器的设置应该按照您在服务器或应用程序级别定义的任何位置工作。

<filter>
 <filter-name>RackFilter</filter-name>
 <filter-class>org.jruby.rack.RackFilter</filter-class>
 <init-param>
    <param-name>resetUnhandledResponse</param-name>
    <param-value>false</param-value> <!-- true (default), false or buffer -->
 </init-param>
</filter>

答案 1 :(得分:0)

对于那些仍在寻找此问题答案的人,请结帐this link。解决方案是为Sonarqube运行的catalina服务器启用CORS。