如何为SonarQube服务启用CORS

use*_*164 5 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>
Run Code Online (Sandbox Code Playgroud)

谢谢,萨拉

小智 3

我也陷入了同样的问题。

要摆脱这个问题,只需在Sonar的文件中设置toresetUnhandledResponse的初始化参数即可。RackFilterfalseweb.xml

然后,无论您在服务器还是应用程序级别定义 CORS 过滤器,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>
Run Code Online (Sandbox Code Playgroud)