Request URL: ******
Request Method: OPTIONS
Status Code: 403
Remote Address: ****
Referrer Policy: no-referrer-when-downgrade
对于邮递浏览器,将其显示为“选项”。
以下是服务器代码:
@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请求”错误。
有什么建议吗?
答案 0 :(得分:1)
您的浏览器首先检查POST方法是否可以安全发送到端点,如果可以,则发出POST请求。您应该提供对OPTIONS方法的权限,并使用Allow: GET, HEAD, POST
进行响应,并且一切正常。我在使用Python时遇到了这个问题,所以这全都与CORS有关,而与平台无关。
查看有关它的更多信息here
答案 1 :(得分:0)
以下解决方案对我有用。
在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代码。