내 웹 애플리케이션에는 AJAX 호출을 통해 인증 자격 증명을 제출하는 로그인 페이지가 있습니다. 사용자가 올바른 사용자 이름과 비밀번호를 입력하면 모든 것이 정상이지만 그렇지 않은 경우 다음이 발생합니다.
- 웹 서버는 요청에 올바른 형식의 Authorization 헤더가 포함되어 있지만 헤더의 자격 증명이 성공적으로 인증되지 않았 음을 확인합니다.
- 웹 서버는 401 상태 코드를 반환하고 지원되는 인증 유형을 나열하는 하나 이상의 WWW-Authenticate 헤더를 포함합니다.
- 브라우저는 XMLHttpRequest 개체에 대한 내 호출에 대한 응답이 401이고 응답에 WWW-Authenticate 헤더가 포함되어 있음을 감지합니다. 그런 다음 사용자 이름과 암호를 다시 묻는 인증 대화 상자가 나타납니다.
3 단계까지는 괜찮습니다. 대화창이 뜨는 것을 원하지 않습니다. AJAX 콜백 함수에서 401 응답을 처리하고 싶습니다. (예를 들어, 로그인 페이지에 오류 메시지를 표시합니다.) 물론 사용자가 사용자 이름과 비밀번호를 다시 입력하기를 원하지만 브라우저의 추악한 기본값이 아닌 친근하고 안심할 수있는 로그인 양식을 볼 수 있기를 바랍니다. 인증 대화 상자.
덧붙여서, 저는 서버를 제어 할 수 없으므로 사용자 지정 상태 코드 (예 : 401 이외의 코드)를 반환하도록하는 것은 옵션이 아닙니다.
인증 대화 상자를 숨길 수있는 방법이 있습니까? 특히 Firefox 2 이상에서 인증 필요 대화 상자를 표시하지 않을 수 있습니까? IE 6 이상에서 [호스트]에 연결 대화 상자 를 표시하지 않는 방법이 있습니까?
저자의 추가 정보 편집 (9 월 18 일) :
브라우저 인증 대화창이 뜨는 진짜 문제는 사용자에게 정보가 충분하지 않다는 점이라고 덧붙여 야합니다.
사용자는 로그인 페이지의 양식을 통해 사용자 이름과 비밀번호를 입력했으며, 둘 다 올바르게 입력했다고 믿고 제출 버튼을 클릭하거나 Enter 키를 누릅니다. 그의 기대는 그가 다음 페이지로 이동하거나 자신의 정보를 잘못 입력 했으므로 다시 시도해야한다는 것입니다. 그러나 대신 예기치 않은 대화 상자가 나타납니다.
대화는 그가 단지 사실을 전혀 인정하지 않으며 한 사용자 이름과 암호를 입력합니다. 문제가 있었으며 다시 시도해야한다는 내용이 명확하지 않습니다. 대신 대화 상자는 "사이트에 ' [realm] '이라고 표시됩니다." 와 같은 비밀 정보를 사용자에게 표시합니다 . 여기서 [realm] 은 프로그래머 만이 좋아할 수있는 짧은 영역 이름입니다.
웹 브라우저 설계자들은주의를 기울입니다. 대화 자체가 단순히 사용자 친화적 인 경우 인증 대화 상자를 숨기는 방법을 묻는 사람은 아무도 없습니다. 전체 I는 로그인 양식을하고있는 중이 야한다는 이유는 우리의 제품 관리 팀은 바르게 브라우저 '인증 대화 상자가 끔찍한 것으로 간주한다는 것입니다.