java - Spring3.1 CORS。这段代码是什么意思?我不明白为什么作者使用 'semi-colon' 到那个位置

标签 java spring syntax cors

我正在寻找一种在 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 语句,但由于“分号”使其以一种完全奇怪的方式运行。

我还是不明白这段代码是如何工作的,如果能工作,为什么作者要这样写代码...

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

有谁能帮我理解这段代码吗?

最佳答案

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

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

这可能是作者的拼写错误。

关于java - Spring3.1 CORS。这段代码是什么意思?我不明白为什么作者使用 'semi-colon' 到那个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41543567/

相关文章:

java - 限制 REST 中的 json 参数

Java Swing 在不同操作系统中定位元素的方式不同

java - Spring Security的ACL配置问题

java - Spring Boot 配置 + RepositoryRestResource + 身份验证

c - C 语法理解 : Pointers

syntax - 将 SPSS 元数据变量标签、值标签、数据类型等导出到自定义文本文件

ios - 声明 __block 变量的正确方法是什么?

java - 映射 map 键的最佳方式

java - @Async EJB 方法 AsyncResult JBoss - java.io.NotSerializedException : javax. ejb.AsyncResult

java - 带有 DynamoDB 和 MySQL 双数据源的 Spring Data/JPA 存储库