Je crée une API avec Spring Boot afin de désactiver le mappage /error
.
J'ai défini les accessoires suivants dans application.properties:
server.error.whitelabel.enabled=false
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
Cependant, lorsque je clique sur /error
, je reçois:
HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 03 Aug 2016 15:15:31 GMT
Connection: close
{"timestamp":1470237331487,"status":999,"error":"None","message":"No message available"}
Résultat requis
HTTP/1.1 404 Internal Server Error
Server: Apache-Coyote/1.1
Vous pouvez désactiver la configuration ErrorMvcAutoConfiguration:
@SpringBootApplication
@EnableAutoConfiguration(exclude = {ErrorMvcAutoConfiguration.class})
public class SpringBootLauncher {
Ou bien à travers application.yml/properties de Spring Boot:
spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration
Si ce n'est pas une option pour vous, vous pouvez également étendre ErrorController de Spring avec votre propre implémentation:
@RestController
public class MyErrorController implements ErrorController {
private static final String ERROR_MAPPING = "/error";
@RequestMapping(value = ERROR_MAPPING)
public ResponseEntity<String> error() {
return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
}
@Override
public String getErrorPath() {
return ERROR_MAPPING;
}
Dans mon cas, le problème concernait les ressources Web référencées dans l'en-tête de la page de connexion. Spécifiquement, css était référencé dans l'en-tête, mais n'existait pas réellement dans le projet.
Ce qui pourrait également être utile, dans mon implémentation WebSecurityConfigurerAdapter
, j’ai commenté le corps de configure(WebSecurity web)
en premier, puis en essayant de vous connecter, au lieu d’afficher l’erreur ci-dessus json, la barre d’adresse de mon navigateur afficherait l’url de la ressource à l’origine du problème.