Ist es möglich, Spring Security für eine Art HTTP-Methode zu deaktivieren?
Wir haben eine Spring REST-Anwendung mit Diensten, für die ein Autorisierungstoken im Header der http-Anforderung angehängt werden muss. Ich schreibe einen JS-Client dafür und verwende JQuery, um die GET / POST-Anforderungen zu senden. Die Anwendung ist mit diesem Filtercode CORS-fähig.
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());
}
Wenn JQuery jedoch die OPTIONS-Anforderung für CORS sendet, antwortet der Server mit dem Token Authorization Failed. Offensichtlich fehlt der OPTIONS-Anforderung das Autorisierungstoken. Ist es also möglich, die OPTIONEN aus der Spring-Sicherheitskonfiguration aus der Sicherheitsschicht zu entfernen?
<intercept-url pattern="/client/edit" access="hasRole('EDITOR')" method="POST, OPTIONS" />
. Richtig ?