2013-12-18 2 views
0

사용자가 액세스 할 수있는 여러 인터페이스가있는 RestFul 웹 서비스를 보호했습니다. 사용자는 적절한 승인 및 인증 즉 https를 통해 이러한 인터페이스에 액세스 할 수 있습니다. FireFox 용 RestFul Client를 다운로드 받았는데, 여기에서 사용자 정의 헤더를 설정하고 본문에 로그인 자격 증명을 제공하고 있습니다. 웹 서비스에 로그인 할 수 있으며 다른 인터페이스에 액세스 할 수 있습니다.RestFul 웹 서비스가 HTTP/1.1 400 Bad Request를 반환합니다.

하지만 jQuery, Ajax를 사용하여이 서비스를 호출하려고했지만 "HTTP/1.1 400 Bad Request"응답을 받았습니다. 다음은 내가 속성을 "헤더"를 사용하여 사용자 정의 헤더를 제공하기 위해 노력 코드

먼저

<script type="text/javascript"> 
    var xhr,jqXHR; 
    if(!xhr && typeof XMLHttpRequest != "undefined") 
    { 
     xhr = new XMLHttpRequest(); 
    } 

self.ajax = function(uri, method, data) { 
    var request = { 
     url: "https://mysite/login", 
     type: "Post", 
     // Content-Type: "application/json", 
     //headers: { 'My-Key': 'ACNDSDSKER$%$%$#$#$#$#$"' }, 
     accepts: "application/json", 
     data: { // the parameters of the request. This should be adapted to your case 
      "uid": username, 
      "password": password 
     }, 
     cache: false, 
     dataType: 'json', 
     data: JSON.stringify(data), 
     beforeSend: function (xhr) { 
      xhr.setRequestHeader("Content-Type", "application/json"); 
      xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password)); 
      xhr.setRequestHeader("My-Key", btoa("ACNDSDSKER$%$%$#$#$#$#$")); 
     }, 
     success:function (jqXHR) { 
      alert("ajax success " + jqXHR.status); 
     }, 
     error: function(jqXHR) { 
      console.log("ajax error " + jqXHR.status); 
     } 
    }; 
    return $.ajax(request); 
에게이지만 같은 오류를 제공합니다. 둘째, beforeSend 함수로 시도했지만 결과는 같습니다. 세 번째로 기본 HTTP 프로토콜을 사용하여 로그인 자격 증명을 인코딩하려했지만 사용하지 않았습니다. 동일한 오류가 발생합니다.

참고 : - Rest Client에서는 사용자 지정 헤더로 "인증"을 제공 할 필요가 없습니다. 또한 사용하는 프로토콜은 "HTTP 인증 - OAuth 프로토콜"입니다.

Rest Client에서 작성한 동일한 요청이 잘 작동하지만 jQuery, Ajax로 작성된 코드가 아닌 이유를 알려주십시오.

답변

0

게시 한 코드가 다소 혼란 스럽습니다. 두 번째 부분은 <script></script> 요소 외부에 있습니다. 이것은 단지 복사/붙여 넣기 오류입니까? 그렇지 않으면 코드를 <script></script> 태그 안에 넣고 다시 tet하십시오.

+0

모든 내용이 스크립트 태그에 있습니다. – user2849371

관련 문제