Una distinta di stato HTTP, per non registrato in vs non autorizzato in un RESTful API

In modo di inviare un paio di diversi status intestazioni nelle mie API tra cui 404, 409, 201, 302 e simili. Ora sono in esecuzione in problemi con 401 Unauthorized. Attualmente sto inviando, se un utente non è connesso (API sono rights managed) o se un utente non riesce a soddisfare le esigenze specifiche di accesso per una determinata risorsa per il recupero/modificato.

Ora, anche io controllo il client frontend (jQuery/HTML applicazione), e vorrei distinguere tra i due casi per 401. C’è un distinto stato dovrebbe usare per i non loggati? È il modo migliore per gestire di inviare il contenuto del corpo fianco di intestazione?

InformationsquelleAutor Steven | 2010-08-19

 

2 Replies
  1. 25

    Si dovrebbe usare 403 per indicare che l’utente non è autorizzato ad accedere alla risorsa. Utilizzando 401 è per indicare che l’utente deve fornire le credenziali per come si stanno usando. Vedere le descrizioni di 401 e 403 qui.

  2. 5

    Come laz dire, si dovrebbe utilizzare 403 quando hai autenticato l’utente, ma l’utente non ha il permesso di fare quello che lei chiede. ad esempio, si potrebbe consentire di OTTENERE ing una risorsa, ma non ELIMINARE o METTERE.

    • 401 errato perché dice sostanzialmente che “non riconosco queste credenziali”
    • 403 è corretto poiché si dice che “non Si è autorizzati a fare questo”

    In ogni caso, la risposta del corpo deve sempre contenere più informazioni, anche quando si tratta di una risposta di errore. Questo consente a un client di una via d’uscita, si spera in movimento in avanti (utilizzando collegamenti incorporati) o fornendo informazioni sufficienti su come procedere (ad esempio, “il Mio record indicano che non si dispone dell’autorizzazione per eliminare XXX, si prega di contattare il vostro amministratore di sistema e chiedere il FOOBAR autorizzazione”).

    • Non sarebbe “non hai il permesso di FOOBAR XXX”?
    • Il “non si dispone dell’autorizzazione per eliminare XXX” è stato pensato come una risposta a una richiesta di ELIMINAZIONE, quindi sì. Se si servono di un 403 ad una richiesta, devi parola in modo appropriato. Il FOOBAR cosa dovrebbe essere “FOOBAR ruolo”. Il punto è quello di informare l’utente come si può risolvere il problema, ma che (messaggio di errore di progettazione) è un altro argomento!

Lascia un commento