【发布时间】:2014-03-08 22:17:07
【问题描述】:
是否可以为一种 HTTP 方法禁用 Spring Security?
我们有一个 Spring REST 应用程序,其服务要求将授权令牌附加到 http 请求的标头中。我正在为它编写一个 JS 客户端并使用 JQuery 发送 GET/POST 请求。该应用程序使用此过滤器代码启用了 CORS。
doFilter(....) {
HttpServletResponse httpResp = (HttpServletResponse) response;
httpResp.setHeader("Access-Control-Allow-Origin", "*");
httpResp.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
httpResp.setHeader("Access-Control-Max-Age", "3600");
Enumeration<String> headersEnum = ((HttpServletRequest) request).getHeaders("Access-Control-Request-Headers");
StringBuilder headers = new StringBuilder();
String delim = "";
while (headersEnum.hasMoreElements()) {
headers.append(delim).append(headersEnum.nextElement());
delim = ", ";
}
httpResp.setHeader("Access-Control-Allow-Headers", headers.toString());
}
但是当 JQuery 发送 CORS 的 OPTIONS 请求时,服务器会以 Authorization Failed 令牌进行响应。显然 OPTIONS 请求缺少授权令牌。那么是否可以让 OPTIONS 从 Spring 安全配置中逃脱安全层?
【问题讨论】:
标签: java spring spring-mvc spring-security cors