2010-08-19 9 views
12

404, 409, 201, 302 등을 포함하여 몇 가지 다른 상태 헤더를 보낼 수 있습니다. 이제 401 Unauthorized과 관련된 문제가 있습니다. 현재 사용자가 로그인하지 않았거나 (전체 API가 권한 관리됨) 사용자가 검색/수정중인 특정 리소스에 대한 특정 액세스 요구 사항을 충족시키지 못하면 현재이를 보내고 있습니다.로그인하지 않은 상태와 RESTful API에서 승인하지 않은 HTTP 상태

이제 프런트 엔드 클라이언트 (jQuery/HTML 응용 프로그램)도 제어합니다. 401에 대한 두 경우를 구분하고 싶습니다. 로그인하지 않은 상태로 사용해야합니까? 본문 내용을 헤더와 함께 보내도록 처리하는 가장 좋은 방법은 무엇입니까?

+0

https://stackoverflow.com/questions/3297048/403-forbidden-vs-401-unauthorized-http-responses에 대한 비슷한 질문입니다. –

답변

20

403을 사용하여 사용자가 리소스에 액세스 할 수있는 권한이 없음을 나타내야합니다. 401을 사용하면 사용자가 현재 자격 증명을 사용하는 것처럼 사용자가 자격 증명을 제공해야 함을 나타냅니다. 401403here에 대한 설명을 참조하십시오.

3

laz는 사용자를 인증 할 때 403을 사용해야하지만 사용자가 요청한 것을 수행 할 수있는 권한이 없다고 말합니다. 예 : 당신은 리소스를 얻을 수 있지만 DELETE 나 PUT은 허용하지 않을 수 있습니다. 그것은 기본적으로는

"당신은이 작업을 수행 할 수 없습니다거야"라고 말한다 이후

  • (403)가 정확한지 "나는 이러한 자격 증명을 인식하지 않는다"고 말했다 이후

    • (401)는 잘못된 것입니다 어쨌든 응답 본문에는 항상 더 많은 정보 인 even when it's an error response이 있어야합니다. 이렇게하면 클라이언트가 빠져 나갈 수 있고, 앞으로 나아갈 수 있습니다 (임베디드 링크 사용) 또는 진행 방법에 대한 충분한 정보를 제공합니다 (예 : "내 기록에 따르면 XXX을 삭제할 수있는 권한이 없다고 표시되어 있습니다. 시스템 관리자에게 문의하여 FOOBAR 권한 ").

  • +0

    "FOOBAR XXX에 대한 권한이 없습니까?" – Hello71

    +0

    "XXX를 삭제할 권한이 없습니다"는 DELETE 요청에 대한 응답으로 간주되었으므로 예입니다. PUT 요청에 403을 제공한다면 적절하게 말하십시오. FOOBAR은 "FOOBAR 역할"을 읽어야합니다. 요점은 사용자에게 문제를 어떻게 해결할 수 있는지 알려주는 것이지만 오류 메시지 디자인은 또 다른 주제입니다. – mogsie

    관련 문제