jQuery ajax를 사용한 HTTP 기본 인증을 사용하여 Firefox가 사용자 이름/비밀번호를 제출하지 않도록하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/928874

문제

브라우저 측면 동적 기능을 작성하고 HTTP Basic Auth를 사용하여 일부 리소스를 보호합니다. 사용자 경험은 매우 중요하며 고도로 사용자 정의됩니다.

다음은 사용자가 올바른 자격 증명을 양식으로 제공했는지 테스트하는 간단한 테스트 jQuery 방법입니다.

$(document).ready(function() {
    $("#submit").click(function() {
    var token = Base64.encode($('#username').val() + ':' + $('#password').val());        
    $.ajax({
      url: '/private',
      method: 'GET',
      async: false,
      beforeSend: function(req) {
        req.setRequestHeader('Authorization', 'test:password');
      },
      error: function(request, textStatus, error) {
        if (request.status == 401) {
          alert('401');
        }
      }
    });
    return false;
  });
});

그들이 접근 할 수없는 경우 /private, 현재 그들은 경고 상자 만 볼 수 있어야합니다. 그러나 Firefox에서는 브라우저 제공 로그인 양식이 팝업됩니다 (새로운 자격 증명으로 재 시도). 사파리는 이것을하지 않습니다.

우리는 사용자 정의 양식, 페이드, 전환 등에 대한 경험을 완전히 제어하고 싶습니다. Firefox의 기본 상자가 표시되는 것을 어떻게 유지할 수 있습니까? (IE를 테스트 할 때 이것이 문제가된다면, 그곳에서도 솔루션을 듣고 싶습니다.)

도움이 되었습니까?

해결책

읽지 않은 경우 :

브라우저의 인증 대화 상자를 어떻게 억압 할 수 있습니까?

너무 유망 해 보이지 않습니다 :)

다른 팁

해결책은 다음을 설정하는 것입니다 WWW-Authenticate 다른 것입니다 Basic. 예를 들어 다음으로 설정합니다.

WWW-Authenticate: None

또는

WWW-Authenticate: FormBased

양식 기반 로그인을 사용하는 경우 그러면 브라우저에 로그인 창이 표시되지 않습니다.

불행히도, 나는 여기에서 같은 문제를 겪고 있습니다.

제 생각에는 브라우저는 XMLHTTPREQUEST에 대한 프롬프트를 제공해서는 안됩니다. 나는 누군가가 사람들이 자신의 인증 요구에 대해 jQuery로 이사하고 싶어하는 원인을 밀어 내기를 바랍니다.

여기에 내가 당신에게 줄 수있는 도움이 있습니다. 나는이 jquery digest를 발견했습니다. 나는 그것이 실제로 무엇을하는지 전혀 모른다. 그러나 누군가이 코드를 올바른 방식으로 취할 수 있다면 jQuery digest auth 시스템을 가질 수있다.

https://www.openhub.net/p/digestj

나는이 편리한 새로운 authdigestdomain 옵션으로 위의 스크립트를 다시 작성하거나 보안 영역을 '연결'할 수 있으며이 문제를 한 번에 지나칠 수 있다고 생각합니다. 글쎄 ... 행운을 빕니다 =)

이 인증 팝업 문제의 해결 방법을 찾았습니다.

WWW-Authenticate: None

나에게는 효과가 없지만 추가했습니다

'Authorization': 'Basic'

헤더와 매력처럼 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top