HTTPQUERY
Français

423 Locked

Utilisation

L’erreur 423 Locked fait partie de Webdav, utilisé comme système de fichiers au-dessus de HTTP. Les clients ont la possibilité de verrouiller (LOCK) ou déverrouiller (UNLOCK) des fichiers, et si un client tente de modifier une ressource verrouillée, c’est l’erreur renvoyée par le serveur.

Lorsqu’un verrou est accordé pour la première fois par un serveur, l’en-tête de réponse Lock-Token est envoyé au client ; il sert ensuite à déverrouiller la ressource ou à renouveler le verrou.

Dans la réponse, le serveur inclut un code de précondition ou de post-condition approprié afin de guider le client. Il peut s’agir de lock-token-submitted ou de no-conflicting-lock.

En dehors de Webdav, certaines plateformes réutilisent 423 pour signaler un verrouillage au niveau du compte. L’API Shopify renvoie 423 Locked lorsqu’une boutique est verrouillée en raison de violations répétées des limites de débit de l’API ou d’un solde de compte impayé. Le propriétaire de la boutique doit résoudre le problème depuis le tableau de bord partenaire Shopify avant que l’accès à l’API ne soit rétabli. Cet usage n’a aucun rapport avec le verrouillage de fichiers.

Impact SEO

Les moteurs de recherche comme Google n’indexeront pas une URL dont le statut de réponse est 423 Locked. Les URL précédemment indexées qui renvoient ce code de statut seront retirées des résultats de recherche.

Exemple

Le client tente de téléverser un fichier dans le dossier cible. Le dossier est verrouillé, l’opération n’est donc pas autorisée et l’erreur 423 Locked est renvoyée. Dans la requête suivante, le client demande le déverrouillage de la ressource en incluant le Lock-Token dans l’en-tête de requête If.

La requête aboutit car il n’y avait qu’un seul verrou sur le dossier à ce moment-là. Un UNLOCK réussi signifie uniquement que le verrou désigné par le Lock-Token indiqué a été supprimé. Les autres verrous restent en vigueur et provoquent de nouveau un 423 Locked.

Requête initiale

PUT /documents/ HTTP/1.1
Host: example.com
Content-Type: application/pdf
Content-Length: 10000

<PDF file transferred>

Réponse initiale

HTTP/1.1 423 Locked
Content-Type: application/xml
Content-Length: 163

<?xml version="1.0" encoding="utf-8" ?>
<d:error xmlns:d="DAV:">
  <d:lock-token-submitted>
    <d:href>/documents/</d:href>
  </d:lock-token-submitted>
</d:error>

Seconde requête, intégrant la demande de déverrouillage

PUT /documents/ HTTP/1.1
Host: example.com
Content-Type: application/pdf
Content-Length: 10000
If: (<urn:uuid:123…789>)

<PDF file transferred>

Réponse finale

HTTP/1.1 204 No Content

Comment corriger

Examinez le corps de la réponse pour y trouver le code de précondition. Une erreur lock-token-submitted signifie que la requête ne comportait pas le jeton de verrou requis. Une erreur no-conflicting-lock signifie qu’un autre verrou empêche l’accès.

Si le verrou appartient à la même session client, incluez la valeur Lock-Token dans un en-tête de requête If et renvoyez la requête. Le serveur valide le jeton et autorise la modification.

Si un autre utilisateur ou processus détient le verrou, attendez son expiration ou contactez son propriétaire. Les délais d’expiration des verrous sont configurables sur le serveur Webdav. Examinez la valeur de l’en-tête Timeout renvoyée lors de l’octroi initial du verrou pour déterminer sa durée de vie.

Dans les environnements SharePoint et Office Online, les fichiers verrouillés par des applications de bureau restent verrouillés jusqu’à la fermeture de l’application ou l’expiration d’un délai configurable. Un administrateur libère les verrous obsolètes via l’interface d’administration de SharePoint.

Envoyez une requête UNLOCK avec le Lock-Token correspondant pour libérer explicitement un verrou. Un déverrouillage réussi ne supprime que le verrou indiqué. Les autres verrous sur la même ressource restent actifs et continuent de déclencher cette erreur.

Côté serveur, définissez des délais d’expiration de verrou raisonnables pour éviter que des verrous abandonnés ne bloquent indéfiniment les autres clients. La spécification WebDAV recommande que les serveurs imposent des limites de délai plutôt que d’accorder des verrous infinis.

Pour les consommateurs de l’API Shopify, un 423 signifie que la boutique elle-même est verrouillée. Réglez tout solde impayé via le tableau de bord partenaire ou contactez le support Shopify pour rétablir l’accès à l’API.

Références de code

.NET

HttpStatusCode.Locked

Rust

http::StatusCode::LOCKED

Rails

:locked

Go

http.StatusLocked

Symfony

Response::HTTP_LOCKED

Python3.5+

http.HTTPStatus.LOCKED

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_LOCKED

Angular

@angular/common/http/HttpStatusCode.Locked