我的后端在SpringBoot上运行,并且我已经使用filter方法启用了CORS,这就是我的SpringCORSFilter
的样子:
@Component
public class SimpleCORSFilter implements Filter {
private final Logger log = LoggerFactory.getLogger(SimpleCORSFilter.class);
public SimpleCORSFilter() {
log.info("SimpleCORSFilter init");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {}
@Override
public void destroy() {}
}
我有2个前端应用程序,并且它们都有类似的HTTP标头设置。 看起来像这样:
let headers = new HttpHeaders({
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PATCH, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Access-Control-Allow-Headers, X-Requested-With',
});
在我的独立角度应用程序中,我仅在Firefox或移动浏览器上看到了这些问题,而在chrome浏览器上却没有看到任何问题。
关于如何解决此问题的任何想法?
编辑1:因此,我已经请几个用户同时测试核心应用程序和我的独立应用程序,在两种情况下我们都看到CORS问题。
答案 0 :(得分:0)
使用本地HTTP模块进行Ajax调用。这是链接 https://ionicframework.com/docs/native/http
答案 1 :(得分:0)
因此,这需要花费很多时间才能完成,并且我意识到特别是在尝试解决CORS问题时,有两点非常重要。
这是我必须从后端角度检查的几件事:
后端实际上已启动并正在运行。
@EnableWebMvc
并重新部署项目后,API调用成功。更改为Spring boot以启用CORS
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings( CorsRegistry registry) {
registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE","OPTIONS").allowedOrigins("*")
.allowedHeaders("*").maxAge(-1) // add maxAge
.allowCredentials(false);
}
};
}
每个CORS错误都有一个解释,重要的是要彻底理解它。在我们的案例中,更多的是SSL证书无法在所有浏览器中都被信任。该ssl checker用于验证SSL证书,并进行了相应的更改以将SSL证书部署到后端。 这样,我们就可以克服SSL问题。