向oauth/token响应添加头(spring安全性)

向oauth/token响应添加头(spring安全性),spring,oauth,spring-security,oauth-2.0,cors,Spring,Oauth,Spring Security,Oauth 2.0,Cors,我想为我的spring应用程序的Oauth2令牌响应添加自定义头。具体来说,它涉及CORS头文件,即访问控制允许源文件。。。我已经设法将它们添加到401个响应中,但没有幸得到200个响应 我到处都找了,调试了这个项目,但没有结果。我已经尝试通过拦截器添加这些头,但响应仍然不包含它们。 有什么想法吗 我正在使用带有注释配置的Spring安全性 我在这里问了类似的问题:在哪里可以检查我的spring配置。结果是我在拦截器中使用了错误的方法 对于任何感兴趣的人,我的工作代码如下: return new

我想为我的spring应用程序的Oauth2令牌响应添加自定义头。具体来说,它涉及CORS头文件,即访问控制允许源文件。。。我已经设法将它们添加到401个响应中,但没有幸得到200个响应

我到处都找了,调试了这个项目,但没有结果。我已经尝试通过拦截器添加这些头,但响应仍然不包含它们。 有什么想法吗

我正在使用带有注释配置的Spring安全性


我在这里问了类似的问题:在哪里可以检查我的spring配置。

结果是我在拦截器中使用了错误的方法

对于任何感兴趣的人,我的工作代码如下:

return new AuthorizationServerConfigurer() {
...
    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        ...
        endpoints.addInterceptor(new HandlerInterceptorAdapter() {

            @Override
            public boolean preHandle(HttpServletRequest hsr, HttpServletResponse rs, Object o) throws Exception {
                rs.setHeader("Access-Control-Allow-Origin", "*");
                rs.setHeader("Access-Control-Allow-Methods", "GET");
                rs.setHeader("Access-Control-Max-Age", "3600");
                rs.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
                return true;
                }
            });
        }
    }
}

结果证明我在截取程序中使用了错误的方法

对于任何感兴趣的人,我的工作代码如下:

return new AuthorizationServerConfigurer() {
...
    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        ...
        endpoints.addInterceptor(new HandlerInterceptorAdapter() {

            @Override
            public boolean preHandle(HttpServletRequest hsr, HttpServletResponse rs, Object o) throws Exception {
                rs.setHeader("Access-Control-Allow-Origin", "*");
                rs.setHeader("Access-Control-Allow-Methods", "GET");
                rs.setHeader("Access-Control-Max-Age", "3600");
                rs.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
                return true;
                }
            });
        }
    }
}
使用这个Cors过滤器(或者如果你将我的版本的最后一行添加到你的版本中,它可能会起作用),你就不会有你在其他链接帖子中提到的问题

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class SimpleCorsFilter implements Filter {

public SimpleCorsFilter() {
}

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) res;
    HttpServletRequest request = (HttpServletRequest) req;
    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", "x-requested-with, authorization");

    if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
        response.setStatus(HttpServletResponse.SC_OK);
    } else {
        chain.doFilter(req, res);
    }
}

@Override
public void init(FilterConfig filterConfig) {
}

@Override
public void destroy() {
}

}
使用这个Cors过滤器(或者如果你将我的版本的最后一行添加到你的版本中,它可能会起作用),你就不会有你在其他链接帖子中提到的问题

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class SimpleCorsFilter implements Filter {

public SimpleCorsFilter() {
}

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) res;
    HttpServletRequest request = (HttpServletRequest) req;
    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", "x-requested-with, authorization");

    if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
        response.setStatus(HttpServletResponse.SC_OK);
    } else {
        chain.doFilter(req, res);
    }
}

@Override
public void init(FilterConfig filterConfig) {
}

@Override
public void destroy() {
}

}

我已经在服务器和html上使用了apache代理,因此我不再需要处理这些问题。在国际海事组织,这是最好的选择,因为CORS的问题正在堆积。另外,在安全方面,最好只处理一个端口。我已经在服务器和html上使用了apache代理,所以我不再需要处理这些问题。在国际海事组织,这是最好的选择,因为CORS的问题正在堆积。此外,在安全方面,最好只处理一个端口。