我试图通过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>
谢谢, 萨拉
答案 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。