Spring 3.0, les Requêtes HEAD
récemment, nous avons déménagé au printemps 3.0 Contrôleur de manutention, comme ceci:
@Controller
public class MyController {
@RequestMapping(method = RequestMethod.POST)
protected String onSubmit ( Form form, Errors errors) {
//handle POST
}
@RequestMapping(method = RequestMethod.GET)
protected void getForm ( Form form ) {
//handle GET
}
}
Maintenant nous obtenons un grand nombre d'Exceptions dans nos journaux à cause de la TÊTE des Demandes.
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'HEAD' not supported
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodResolver.resolveHandlerMethod(AnnotationMethodHandlerAdapter.java:621)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:422)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:415)
...
Je tiens à soutenir la TÊTE des Demandes de la même manière que les Requêtes GET, mais obéissant à l'adresse HTTP de référence de cours:
La TÊTE de la méthode est identique pour OBTENIR
sauf que le serveur ne DOIT PAS
retourner un corps dans la réponse.
La meta-information contenue dans
les en-têtes HTTP en réponse à une TÊTE
la demande DOIT être identique à la
les informations envoyées en réponse à une
demande. Cette méthode peut être utilisée
pour l'obtention de la métainformation sur
l'entité impliquée par la demande
sans transférer le corps de l'entité
lui-même. Cette méthode est souvent utilisée
pour le test des liens hypertextes pour
la validité, l'accessibilité, et la récente
la modification.
http://www.ietf.org/rfc/rfc2616.txt
Quelqu'un a une solution élégante ou est-il encore un printemps solution out-of-the-box?
J'ai cherché sur le web mais n'a pas trouvé toutes les réponses à cela.
PycURL ne une méthode de demande = la tête pour faire des gets. Habituellement, j'ai trouvé que ce est tout à fait normal que beaucoup de moteurs de recherche comme : oneriot.com, ask.com etc..
qui se soucie de l'outil de prise de TÊTE de la Demande. Ceci est une Requête HTTP et de navigateur de beaucoup le font réellement (vérification de signets ou de quoi que ce soit).
Selon le lien ci-dessous printemps devrait fournir implicite de la TÊTE et des OPTIONS si elles ne sont pas présentes pour les url de demande, est-il vrai de printemps 4? ou quelque chose d'autre que je suis absent? printemps docs mvc est le lien.
OriginalL'auteur Janning | 2010-09-27
Vous devez vous connecter pour publier un commentaire.
Je crois que c'est ce que vous cherchez:
http://www.axelfontaine.com/2009/09/transparently-supporting-http-head.html
S'il vous plaît ajouter plus d'informations, non seulement un lien.
OriginalL'auteur Nino Skilj
Juste ajouter
HEAD
comme une méthode de prise en charge de la la demande de la cartographie:Mise à jour: je pense que vous pouvez fournir une classe personnalisée qui s'étend
AnnotationMethodHandlerAdapter
pour être le gestionnaire de méthode (endispatcher-servlet.xml
), et juste contourner le support de TÊTE case. Mais je venais d'utiliser le remplacer fonctionnalités de l'IDE pour l'ajouter.voir mise à jour
Assurément, ce serait violer le cahier des charges qui stipule que La TÊTE de la méthode est identique pour les OBTENIR, sauf que le serveur ne DOIT PAS retourner un corps dans la réponse.'?
cela dépend de votre conteneur web. Apache Tomcat n'supprimer automatiquement le corps de la réponse pour les requêtes HEAD, par exemple.
C'est la bonne réponse aujourd'hui. Printemps gère le
NoResponseBody
automatiquement siRequestMethod.HEAD
est ajouté.OriginalL'auteur Bozho
Dans le courant du Printemps (4.3.10) la TÊTE est automatiquement pris en charge:
https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-requestmapping-head-options
Le lien a été corrigé
OriginalL'auteur Janning