2012-07-12 6 views
1

DBMS에 액세스하기위한 타사 API로 사용할 Delphi XE2 DataSnap Rest 서버를 구축하려고합니다.jquery 및 AJAX를 사용하여 DataSnap 인증 자격 증명 전달

인증 및 권한 부여를 사용하여 xe2에서 나머지 데이터 맵 마법사를 사용할 때 제공되는 샘플 메소드의 기능을 확장했습니다.

필자가 작성한 모든 서버 메소드는 브라우저를 통해 직접 액세스 할 때 예상 한 데이터를 다시 전달한다는 것을 확인할 수 있습니다.

문제는 $ .ajax() 호출로 서버에 인증을 시도하는 데 있습니다.

브라우저 주소 표시 줄에서 액세스 할 때 사용자 이름과 암호를 묻는 메시지가 표시되며 두 주소 모두에 "dev"를 입력하면 계속할 수 있습니다.

ajax() 사용자 이름과 암호 매개 변수를 "dev"로 설정하면 HTTP 401 응답이 표시됩니다. 내가 인증을 해제하면

$("#contentdiv").click(function(){ 
     $.ajax({ 
      type:"GET", 
      cache:"false", 
      username:"dev", 
      password:"dev", 
      url:"http://192.168.0.2:8080/datasnap/rest/TServerMethods1/methodname/", 
      dataType:"jsonp", 
      statusCode: { 
       200: function(data){ 
        alert('success '); 
       } 
      }    
     }); 
}); 

, 나는 성공적으로 JSON 델파이에 구문 오류이기는하지만 (A HTTP 200 응답을 얻을 수 있습니다

내가 여기에 내가 제대로 일을하고 있다고 생각하지만,이 코드입니다 DataSnap이 반환되지만 다른 시간에 대한 질문입니다).

또한 무엇을 알아야할까요? 수동으로 로그인 한 다음 아약스를 실행하면 작동합니다. 자격 증명이 캐시되었거나 일부 캐시 된 것으로 가정합니다.

두 기술에 새로운 것이므로 부드럽게 다루십시오. 내가 가져올 수있는 물건을 남겨 두었다면 알려주세요. 여기에서 알려 드리겠습니다.

답변

0

Ajax 코드는 JSONP를 사용하며 서버는 기본 인증을 사용합니다.

this answer에 댓글 JSONP는 기본 인증에 필요한 사용자/PWD 헤더를 포함 할 수 없다는

: 그 이유는 (위의 답변에서 인용)

Basic Authentication with jQuery.ajax request and jsonp

입니다 :

JSONP 다르게 작동하면 파일을 가져 오는 태그가 포함 된 GET 요청 인 이 포함되어 있으므로 특수 헤더 나 다른 것을 보내지 않습니다.

관련 문제