迁移到SpringBoot 3后的CORS问题[已关闭]

0x6upsns  于 2022-12-23  发布在  Spring
关注(0)|答案(1)|浏览(302)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
7天前关闭。
Improve this question
以前,我们的内部网Java17/Angular11应用程序在SpringBoot 2.7和Azure上运行良好。升级到SB 3.0后,当我尝试在Azure环境中对应用程序进行REST调用时,我现在收到如下CORS策略/访问错误。
注:这些CORS错误不是本地发生的。
CORS策略已阻止从源"https://xxxxxxxxx"访问位于"https://xxxxxxx"的XMLHttpRequest:对印前检查请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头。
我尝试了许多解决方案,最近的一个是自定义CORS过滤器,如下所示:

@Component
public class CorsFilter implements Filter {

    private final Logger log = LoggerFactory.getLogger(CorsFilter.class);

    public CorsFilter() {
        log.info("lCORSFilter 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", request.getHeader("Origin"));
        response.setHeader("Access-Control-Allow-Credentials", "true");
        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() {
    }

}

除了在每个@RestController上使用@CrossOrigin标注(如下图所示)之外

@CrossOrigin(origins = { "*" }, maxAge = 4800, allowCredentials = "false")
@RestController
@RequestMapping("/hello")

我们使用的是JDK 17.0.5,我遗漏了什么?

u0sqgete

u0sqgete1#

这个问题可以关闭。问题是下游Azure环境还没有在JDK17上。我做了几次尝试,在我让管理员迁移到JDK17后,结果工作正常

相关问题