当前位置: 首页 > 知识库问答 >
问题:

CORS政策阻止JS在ZUUL后面获得春假服务

尹英华
2023-03-14

我正在使用各种Spring Cloud框架构建一个基于服务的小型平台。各个组件如下所示:

  • 尤里卡发现服务器
  • 一个 Spring-Config 服务器
  • 身份验证服务器
  • Zuul 网关服务器
  • REST 服务
  • 一个 PostgreSQL 服务器
  • 在浏览器中运行的简单基于 JQuery 的客户端

(是的,这是基于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;
}

这产生了同样的错误。

有什么想法吗?

共有2个答案

韩阳成
2023-03-14

好吧,所以我通过从服务中删除所有Cors配置并将其添加到Zuul网关来修复它。

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {

        registry.addMapping("/**")
                .allowedMethods("POST", "PUT", "GET", "OPTIONS", "DELETE", "HEAD");
    }
}

它可以工作,但是我不知道为什么我以前的尝试不行(很明显,我讨厌在不知道怎么做的情况下修理东西)。所以如果有人有任何想法...

干杯干杯

龚安民
2023-03-14

在控制器中,您需要添加另一个带有@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: 还没有结果