Spring3.1 CORS。这段代码是什么意思?我不明白为什么作者使用“分号”来表达这个位置

问题描述 投票:0回答:1

我一直在寻找一个在spring3.1上启用CORS的解决方案,几乎每个人都使用相同的代码,如下所示。

public class CorsFilter extends OncePerRequestFilter {

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
        throws ServletException, IOException {
    response.addHeader("Access-Control-Allow-Origin", "*");        
    if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())); {
        // CORS "pre-flight" request
        response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        response.addHeader("Access-Control-Allow-Headers", "Authorization");        
        response.addHeader("Access-Control-Max-Age", "1728000");
    }
    filterChain.doFilter(request, response);
}

}

我从https://gist.github.com/kdonald/2232095看到了这段代码

你是否在if语句结束时看到'分号'?我有点生气,因为我在这段代码上挣扎了一个多小时......

这段代码看起来像典型的if语句,但因为“分号”使它以完全奇怪的方式运行。

我仍然不明白这段代码是如何工作的,如果它有效,为什么作者会这样编写代码......

不仅对于'分号',而且对于{},如果'分号'用于任何目的,这个括号也是无用的。

有没有人能帮我理解这段代码?

java spring syntax cors
1个回答
1
投票

分号将结束if语句,使其成为空if语句。允许使用此语法,因为您可以编写无括号if语句。

然后,独立的大括号将声明一个匿名块,它会添加标题。该块将始终执行。所以你总是会添加标题。

这可能是作者的错字。

© www.soinside.com 2019 - 2024. All rights reserved.