我正在使用各种Spring Cloud框架构建一个基于服务的小型平台。各个组件如下所示:
(是的,这是基于Manning的“Spring Microservices in Action”中提出的设计)
这一切在开发中都很好。然而,我最近将所有这些服务器端的东西部署到了一个外部服务器(运行docker-compose ),我再也不能访问服务endpoint了。
通过JQuery调用服务endpoint时,我收到以下错误:
从源“http://localhost:8080”访问位于“https://my . domain . com/API/resource/123/sub resource/456”的XMLHttpRequest已被CORS策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
我尝试将以下内容添加到Zuul服务器(在Spring Boot应用程序类的同一@EnableZuulProxy):
@Bean
public FilterRegsitrationBean corsFilter() {
UrlBaseCorsConfigurationSource source =
new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("*", config);
FilterRegistrationBean<CorsFilter> bean =
new FilterRegistrationBean<>(new CorsFilter(source));
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return bean;
}
这产生了同样的错误。
有什么想法吗?
好吧,所以我通过从服务中删除所有Cors配置并将其添加到Zuul网关来修复它。
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("POST", "PUT", "GET", "OPTIONS", "DELETE", "HEAD");
}
}
它可以工作,但是我不知道为什么我以前的尝试不行(很明显,我讨厌在不知道怎么做的情况下修理东西)。所以如果有人有任何想法...
干杯干杯
在控制器中,您需要添加另一个带有@RestController/@Controller的注释。
@交叉起源
这样地:
@Controller
@CrossOrigin(origins = "*", allowedHeaders = "*")
public class HomeController
试试这个。
所以我的问题是: 每当我尝试从我的网页(同一台机器,不同的端口)向我的HTTP服务器发出XMLHttpRequest时,我都会被此错误阻止: 为什么会发生这种情况? 示例客户端(浏览器): 示例服务器(NodeJS、HTTP库): 已解决,感谢Quentin的评论:D
我有一个在Node开发的API。JS,打字稿听localhost:3001我有一个Angular的前端应用程序,打字稿听localhost:4200 我正在尝试使用ngx-image-cropper上传图像文件,将其转换为base 64,从前端到API。 当补丁(更新)http请求发送到API时,我得到: 访问位于'http://localhost:3001/member/10'从原点'http:
我在从Angular发送auth头jwt令牌时得到了下面的问题。CORS策略阻止从来源“http://localhost:4200”访问位于“http://localhost:52278/api/user/signup”的XMLHttpRequest:请求的资源上没有“Access-Control-Allow-Origin”标头。 棱角分明的:
我有一个flask socketio服务器,运行在带有nginx的ubuntu上。我有一个客户端调用服务器。当我尝试呼叫服务器时,收到以下错误: 这是我对烧瓶的初始化: ... 这是我当前在nginx中的配置: 来自客户端对服务器的请求如下所示: 我尝试过: -添加允许CORS到位置/仅,以及两者-在烧瓶应用程序中删除/添加allow CORS origin。 有人能帮忙吗?
我的应用程序的客户端是.NET6,服务器端web API是.NET 4.8。当尝试访问服务器端时,浏览器控制台中会产生以下错误: CORS策略已阻止从源“https://localhost:34564”访问“https://localhost:12345/API/controller/method”进行提取:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透
访问位于“”的XMLHttpRequesthttp://localhost:8080/api/auth/signup“起源”https://mysuite.ru'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:飞行前请求不允许重定向。 通过nginx重定向 使现代化 请求标头: 加载项nginx: 还没有结果