【问题标题】:Invalid CORS request for post call?无效的 CORS 请求后调用?
【发布时间】:2018-11-14 11:10:14
【问题描述】:
Request URL: ******
Request Method: OPTIONS
Status Code: 403 
Remote Address: ****
Referrer Policy: no-referrer-when-downgrade

对于显示为 OPTIONS 的通话后浏览器。

以下是服务器代码:

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurerAdapter() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            System.out.println("onboard cors");

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

当我直接调用相应的服务时,上面的代码工作正常。

但通过 zuul api 网关调用服务得到“无效的 cors 请求”错误。

有什么建议吗?

【问题讨论】:

  • 这是浏览器的预检检查,要实现它,你必须实现跨域,我只是在我的控制器中添加了CrossOrigin 注释并工作。如果你的项目中有spring security,那你添加的配置是不够的。
  • 嗨 Mohamed,我尝试了上述方法,但没有成功。我尝试了 3 种方法 1. 全局 CORS 2. 控制器级别 3. 方法级别
  • 上面的代码可以工作,但是我们使用的是zuul api网关,通过zuul api网关调用post调用是不工作的。通过直接调用相应的服务,它工作正常。
  • 很抱歉听到这个消息,但我想您一定已经提到问题出在 zuul 级别,而不是微服务本身。祝你好运

标签: java spring spring-boot netflix-zuul


【解决方案1】:

您的浏览器首先检查 POST 方法是否可以安全地发送到端点,如果是,则执行 POST 请求。您应该提供 OPTIONS 方法的权限并使用Allow: GET, HEAD, POST 对其进行响应,一切都应该没问题。我在使用 Python 时遇到了这个问题,所以这都是关于 CORS 的,不依赖于平台。

查看更多信息here

【讨论】:

    【解决方案2】:

    以下解决方案对我有用。

    在zuul项目中添加如下代码:

    @Bean
    public FilterRegistrationBean corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");
        source.registerCorsConfiguration("/**", config);
        FilterRegistrationBean bean = new FilterRegistrationBean(new org.springframework.web.filter.CorsFilter(source));
        bean.setOrder(0);
        return bean;
    }
    

    不需要在所有微服务中添加 corsfilter 代码。

    参考:https://stackoverflow.com/a/46277194/4132466

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 2017-05-25
      • 1970-01-01
      • 2016-12-11
      • 2016-04-11
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      相关资源
      最近更新 更多