Spring Cloud - Zuul Proxy 正在产生一个没有“访问控制允许来源"的 ajax 响应 [英] Spring Cloud - Zuul Proxy is producing a No 'Access-Control-Allow-Origin' ajax response
问题描述
启动应用程序:
@SpringBootApplication
@EnableZuulProxy
public class ZuulServer {
public static void main(String[] args) {
new SpringApplicationBuilder(ZuulServer.class).web(true).run(args);
}
}
我的 YAML 文件是这样的:
My YAML file is like this:
server:
port:8080
spring:
application:
name: zuul
eureka:
client:
enabled: true
serviceUrl:
defaultZone: http://localhost:8761/eureka/
zuul:
proxy:
route:
springapp: /springapp
我有一个名为 springapp 的微服务应用程序(在端口 8081 上)并且有一些休息服务.下面是我的客户端 UI 应用:
I have a microservice application (on port 8081) called springapp and has some rest services. Below is my client UI app:
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="js/libs/jquery/jquery.min.js" ></script>
</head>
<body>
<script type="text/javascript">
$.ajax({
url: 'http://localhost:8080/zuul/springapp/departments',
type: 'GET'
}).done(function (data) {
consoe.log(data);
document.write(data);
});
</script>
</body>
</html>
但我得到一个
XMLHttpRequest cannot load http://localhost:8080/zuul/springapp/departments. No
'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'http://localhost:8383' is therefore not allowed access.
此 UI HTML5 应用位于 http://localhost:8383/SimpleAPp/index.html.CORS,CORS,CORS... 请帮忙.顺便说一句,http://localhost:8080/zuul/springapp/departments 返回一个 json 列表到浏览器地址栏时.spring.io 博客 此处 表示不需要过滤器,因为 zuulproxy 会处理这个问题,但我不知道为什么它对我不起作用.
This UI HTML5 app is on http://localhost:8383/SimpleAPp/index.html. CORS, CORS, CORS... Please help. BTW the http://localhost:8080/zuul/springapp/departments returns a json list as supposed to when on the browser address bar. The spring.io blog here says that there is no need for a filter because the zuulproxy takes care of that but I don't know why it is not working for me.
推荐答案
将这段代码添加到用 @EnableZuulProxy 注释的类中应该可以解决问题.
Adding this piece of code to your class annotated with @EnableZuulProxy should do the trick.
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("OPTIONS");
config.addAllowedMethod("HEAD");
config.addAllowedMethod("GET");
config.addAllowedMethod("PUT");
config.addAllowedMethod("POST");
config.addAllowedMethod("DELETE");
config.addAllowedMethod("PATCH");
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
这篇关于Spring Cloud - Zuul Proxy 正在产生一个没有“访问控制允许来源"的 ajax 响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!