2012-11-21 4 views
3

내 localhost에서 호스팅되는 webservice를 호출하려고합니다. 이 AJAX 호출은 나를 위해 작동하며 "Authorization"토큰이 서비스에 대한 요청 헤더에 전송 된 것을 볼 수 있습니다.WebService가 Azure Cloud에서 호스팅 될 때 Jquery AJAX 호출이 실패합니다.

$.ajax({ 
     type: method, 
     url: serviceUrl, 
     beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Authorization", Token); }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     ProcessData: true, 
     cache: false, 
     success: successHandler, 
     error: errorHandler 
    }); 

는하지만이 시간이 나는 푸른 구름과 같은 AJAX 호출 작품에서 호스팅 서비스를 호출하려고하지만 content.I는 요청의 헤더 내용을 검사 할 피들러를 사용하고있는 헤더를 보내지 않습니다. 헤더에 "Authorization"토큰이 있도록하기 위해 할 수있는 일이 있습니까?

답변

2

이는 도메인 간 정책 제한 일 수 있습니다. 당신은 ajax 호출과 서비스가 같은 도메인 내에 있는지 확인해야합니다. 그렇지 않으면 작동시키기 위해 약간의 해킹을해야 할 것입니다.

+0

Azure 클라우드에있는 애플리케이션 (여기에서 나는 ajax 호출을 작성했습니다)과 WebService를 호스팅했으며 둘 다 동일한 도메인에 있습니다. 하지만 여전히 아약스 요청 헤더에 토큰이 전송되는 것을 보지 못했습니다. 근본 원인을 찾을 수 있도록 내가 할 수있는 일이 있습니까? –

0

도메인 간 AJAX 호출을 막기 위해 security policies at the browser level이 있습니다. 가이 여러 해결 방법 (such as using XML instead of JSON 또는 this jQuery plugin)가 있지만 대부분의 "올바른"는 당신의 AJAX 호출에 dataType을 변경하여 당신이 할 수 있다고 생각하는 using JSONP instead of JSON 것 같다 : 그게 아니라면

$.ajax({ 
    //...etc. 
    dataType: "jsonp", 
    //...etc. 
}); 

문제가 발생하면 beforeSend 처리기에 return true;을 추가하십시오. The request gets canceled if that returns false,하지만 값을 전혀 반환하지 않으면 어떻게되는지 알 수 없습니다.

+0

dataType을 "jsonp"로 변경했지만이 경우에도 문제가 해결되지 않는 것 같습니다. 나는 여전히 AJAX 요청 헤더에 어떤 데이터도 보내지 않는다. –

+0

@AbhishekJ - 제 편집에서 제안을 시도하십시오. –

+0

나는 그것을 시도했지만 여전히 작동하지 않습니다. 헤더에 토큰을 보내는 아약스 호출을 허용하지 않는 다른 문제가 있습니까? –

관련 문제