2011-07-18 4 views
0

미리 정의 된 웹 서비스를 SharePoint 서버에서 호출하려고하지만 동일한 원본 정책 문제로 인해 해결할 수 없어 솔루션을 찾을 수 없습니다. document.domain을 서버 이름과 서버 포트로 설정하려고 시도했지만 대신 이전 오류와 동일한 문제인 DOM 보안 오류 18이 발생합니다. 나는 getLists 메소드를 호출하여 작동 여부를 확인하기 위해 노력하고 있으며 코드는 자습서에서 가져온 다음 온라인으로 here에서 본 것입니다. 어떤 도움을 많이 주셨습니다. 미리 감사드립니다.동일한 출처 정책 문제와 같은 공유 SharePoint 웹 서비스 호출

내 코드는 다음과 같다 :

아약스와
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.1.js" type="text/javascript"></script> 
</head> 
<body> 
<div> 
<script type="text/javascript"> 

$(document).ready(function() { 
document.domain = 'http://servername:serverport' 
var soapEnv = 
"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \ 
<soapenv:Body> \ 
<GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \ 
<listName>Occupations</listName> \ 
<viewFields> \ 
<ViewFields> \ 
<FieldRef Name='Title' /> \ 
</ViewFields> \ 
</viewFields> \ 
</GetListItems> \ 
</soapenv:Body> \ 
</soapenv:Envelope>"; 

// Call web service 
$.ajax({ 
url: "http://servername:serverport/_vti_bin/lists.asmx", 
type: "POST", 
dataType: "xml", 
data: soapEnv, 
complete: processListAccessResult, 
contentType: "text/xml; charset=\"utf-8\"" 
}); 
}); 

// Process result 
function processListAccessResult(xData, status) { 
$(xData.responseXML).find("z\\:row").each(function() { 
$("#data").append("<li>" + $(this).attr("ows_Title") + "</li>"); 
}); 
} 

</script> 

<ul id="data"></ul> 

</div> 

</body> 
</html> 

답변

1

, 당신의 페이지와 데이터가 같은 최상위 도메인에서 온해야합니다. 이 문제를 해결하는 방법은 다음과 같습니다.

  • 실제로 페이지와 XML 데이터를 제공하는 데 동일한 도메인을 사용하십시오.
  • 서버의 프록시를 사용하여 원격 도메인에서 XML을 가져온 다음 페이지와 동일한 도메인에서 다시 제공하십시오.
  • 브라우저에서 보안을 낮추거나 목록에있는 사이트에 사이트를 추가하십시오. 대신 XML의
  • 사용 JSONP (이 크로스 도메인 정책 주위에 작동)
  • 사용 야후 파이프 또는 YQL은 JSONP like this example에 XML을 변환하는 (가 인트라넷 또는 뭔가 않는 한 그것이 거의 옵션의로이에게 자신을 해본 적이)
+1

개요에 동의하지만 단일 출신 제한은 XML에만 적용되는 것이 아니라 JSON 및 기타 항목에도 적용됩니다. – tinyd

+0

좋은 지적. 나는 더 정확한 XML을 만들기 위해 첫 문장을 편집했다. – Grezzo

+0

JSON 플러그인에서 jQuery XML을 사용하고 JSONP에서 JSON을 사용할 패드를 사용할 수 있습니까? –

1

document.domain 접근 방식은 두 페이지가 동일한 최상위 도메인에서 온 경우에만 작동하며 포트가 다른 경우 작동하지 않습니다. 두 가지 모두에서 HTML이 아닌 XML을 검색하려고 시도 할 때 적용되지 않는 두 페이지 모두에 설정되어 있지 않으면 내가 기억하는 것으로부터 작동하지 않습니다.

그렇지 않으면, 당신은 ... 간 리소스 공유입니다

0

사용 CORS 위 Grezzo의 응답으로 이동해야합니다.

관련 문제