programing

jQuery ajax 핸들 401 무단

css3 2023. 9. 12. 20:12

jQuery ajax 핸들 401 무단

jQuery ajax를 이용하여 타사 웹페이지로 전화를 드립니다.그들의 페이지에 의하면 로그인이 성공하면 상태 코드 200을, 로그인이 실패하면 401을 보내주었다고 합니다.여기 제 jquery code 샘플이 있습니다.이 코드는 IE에서는 잘 작동하지만 Chrome이나 Firefox에서는 작동하지 않습니다.무엇이 문제가 될 수 있습니까?

$.ajax({
  type: 'GET',
  url: hostURL + 'j_teo_security_check?callback=?',
  dataType: 'json',
  data: ({j_username : $("#inp_user_name").val(), j_password: $("#inp_user_pwd").val()}),
  statusCode: {
      401:function() { alert("401"); },
      404:function() { alert("404"); },
      200:function() { alert("200"); },
      201:function() { alert("201"); },
      202:function() { alert("202"); }
    },
    complete: function(httpObj, textStatus){
    alert(httpObj.status);
  },
  error: function(){
    alert("error");
  },
  async: false
});

모든 기능 오류, 성공, 완료, statusCode를 시도했습니다.그들 중 누구도 401 오류를 처리하지 못합니다.

아래와 같이 고정할 수 있습니다.

$(document).ready(function(){
        $("#cmdLogin").click(function(){             
             var request = $.ajax({
                url : hostURL + 'j_teo_security_check',
                data: ({j_username : $("#inp_user_name").val(), j_password: $("#inp_user_pwd").val()}),
                dataType : "jsonp",
                timeout : 5000
            });

            request.success(function() {
                loginSuccess();
            });

            request.error(function(httpObj, textStatus) {       
                if(httpObj.status==200)
                    loginSuccess();
                else
                    loginFail();
            });
        });
    })

401 에러가 다시 발생하지 않아 추가 타임아웃을 했습니다.상태 코드 200과 파싱 오류에도 에러 기능을 하기 때문에 에러 내부의 상태 200을 무시하도록 만들었습니다.

네, jsonp를 사용하시는 것으로 보이는데 jsonp의 한계일 수도 있을 것 같습니다.한번 보세요.

http://forum.jquery.com/topic/jquery-ajax-with-datatype-jsonp-will-not-use-error-callback-if-request-fails

지난번 게시물에 해결책이 있는 것 같습니다.도움이 되길 바랍니다!

언급URL : https://stackoverflow.com/questions/10267683/jquery-ajax-handle-401-unauthorized