Bei Verwendung von Spring Security mit 5.2.0.RELEASE können die folgenden unterschiedlichen Antwortheader dupliziert werden.
Insbesondere wenn der Test von @ CrossOrigin
Controller wie folgt ausgeführt wird, wird er dupliziert.
@Autowired
private WebApplicationContext context;
private MockMvc mockMvc;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(context)
.apply(SecurityMockMvcConfigurers.springSecurity()).build();
}
Spring Framework 5.2.0.RELEASE (spring-web) + Verwenden Sie Spring Security
Tritt auf, wenn sowohl die Spring Security CORS-Einstellung als auch die Annotation "@ CrossOrigin" für den Endpunkt festgelegt sind. Dies liegt daran, dass die Methode "handleInternal" von "DefaultCorsProcessor.java" geändert wurde, um den Vary-Header mit der Methode "processRequest" hinzuzufügen. Das CORS in Spring Security und der CORS-Filter in WebMVC scheinen abgedeckt zu sein und können zweimal ausgeführt werden.
DefaultCorsProcessor.java
public boolean processRequest(@Nullable CorsConfiguration config, HttpServletRequest request,
HttpServletResponse response) throws IOException {
response.addHeader(HttpHeaders.VARY, HttpHeaders.ORIGIN);
response.addHeader(HttpHeaders.VARY, HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD);
response.addHeader(HttpHeaders.VARY, HttpHeaders.ACCESS_CONTROL_REQUEST_HEADERS);
...
Klicken Sie hier für Unterschiede
Stoppen Sie die Cors-Einstellung, die in der Spring Security-Konfiguration wie folgt eingestellt ist.
SpringSecurityConfig.java
@Override
public void configure(HttpSecurity http) throws Exception {
http...
.cors()
.configurationSource(this.corsConfigurationSource());
}
private CorsConfigurationSource corsConfigurationSource() {
...
}
Bisher war es in Ordnung, CorsFilter zweimal auszuführen. Da sich jedoch die Position des Header-Zusatzes geändert hat, wurde es nach zweimaliger Ausführung dupliziert.
Sie sollten CORS nicht für Spring Security und @ CrossOrigin
einstellen. ..
Wenn es eine andere gute Lösung gibt. .. .. .. ..
Übrigens gibt es noch einige andere Änderungen. 5.2.0 beängstigend https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-5.x