为OPTIONS Http方法禁用Spring Security
是否可以为某种HTTP方法禁用Spring Security?
我们有一个Spring
REST应用程序,其服务需要在HTTP请求的标头中附加Authorization令牌。我正在为此编写一个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请求时,服务器将以“授权失败”令牌进行响应。显然,OPTIONS请求缺少授权令牌。那么有可能让OPTIONS从Spring
Security Configuration逃脱安全层吗?
回答:
你尝试过这个吗
您可以使用多个元素为不同的URL集定义不同的访问要求,但是将按照列出的顺序评估它们,并且将使用第一个匹配项。因此,您必须将最具体的匹配项放在顶部。您还可以添加方法属性,以将匹配限制为特定的HTTP方法(GET,POST,PUT等)。
<http auto-config="true"> <intercept-url pattern="/client/edit" access="isAuthenticated" method="GET" />
<intercept-url pattern="/client/edit" access="hasRole('EDITOR')" method="POST" />
</http>
以上意味着您需要选择要拦截的url模式以及所需的方法
以上是 为OPTIONS Http方法禁用Spring Security 的全部内容, 来源链接: utcz.com/qa/432198.html