0

En Is HTTP 303 acceptable for other HTTP methods? nous avons établi que HTTP 303 peut être utilisé pour d'autres méthodes HTTP. Le modèle Post/Redirect/Get nécessite que le serveur exécute une opération avant de renvoyer HTTP 303. Est-ce la même chose pour HTTP PUT et DELETE pour ceci et d'autres types de redirections? Le serveur est-il requis pour effectuer l'opération avant la redirection? Ou peut-il supposer que le client répétera la demande sur l'URL canonique si nécessaire?Un serveur doit-il effectuer une opération avant la redirection?

Cela devient encore plus intéressant si l'on considère le fait que la redirection est souvent utilisée pour l'équilibrage de charge.

Répondre

0

Citant RESTful Web Services la page 378:

303 ("Voir Autres")

La demande a été traitée, mais au lieu du serveur d'envoi d'un document de réponse, il est l'envoi du client la URI d'un document de réponse. Cela peut être l'URI d'un message d'état statique ou l'URI d'une ressource plus intéressante.

Quelques pages plus loin ...

307 (« Redirect temporaire »)

La demande n'a pas été traitée, car la ressource est pas à la maison: il est situé à un autre URI. Le client doit renvoyer la demande à un autre URI. Pour les requêtes GET, où la seule chose demandée est que le serveur envoie une représentation, ce code d'état est identique to 303 (“See Other”). Un cas typique où 307 est une bonne réponse à un GET est lorsque le serveur veut envoyer un client à un site miroir. Mais pour POST, PUT, and DELETE demandes, où le serveur est censé prendre une action en réponse à la demande, ce code d'état est significativement différent de 303. Un 303 en réponse à POST, PUT, or DELETE signifie que l'opération a réussi mais que le corps d'entité de réponse n'est pas envoyé avec cette demande. Si le client veut le corps d'entité de réponse, il doit faire une demande GET à un autre URI. Un 307 en réponse à un POST, PUT, or DELETE signifie que le serveur n'a même pas essayé pour effectuer l'opération. Le client doit renvoyer la totalité de la demande à l'URI au l'en-tête Location.

Une analogie peut aider. Vous allez à une pharmacie avec une prescription à remplir. Un 303 est le pharmacien disant "Nous avons rempli votre prescription. Rendez-vous à la fenêtre suivante pour choisir votre médicament. "A 307 est le pharmacien en disant" Nous ne pouvons pas remplir cette prescription. Rendez-vous au à la pharmacie d'à côté. "

Questions connexes