2012-04-24 6 views
1

다음과 같은 상황이 있습니다. 에 위치한 응용 프로그램에서jquery가있는 하위 도메인 html 페이지

https://subdomain.mydomain.com 내가 https://mydomain.com/page.aspx

I에있는 페이지의 HTML를 얻기 위해 노력하고 있어요 jquery $ .ajax 메서드로이 작업을 수행합니다.

$.ajax({ 
     url: url, 
     type: 'GET', 
     contentType: 'application/x-www-form-urlencoded', 
     success: function (data, status, xhr) { 
      console.info("success"); 
     }, 
     error: function (xhr, status, error) { 
      console.error(error); 
     } 
    }); 

실제로 aspx 페이지가 호출되어 실행됩니다. 검사원 (IE의 개발 도구 및 방화범)에서 I는 응답 상태가 200 OK 것을보고는 예상 크기 (80킬로바이트)하지만, 응답 내용이 :

(XDomainRequest를 통해) IE와 파이어 폭스는 같은 동작을 비었다. JQuery와 오류가 그렇게 유용하지 않다 :

readyState: 0, 
    responseText: "" 
    status: 0, 
    statusText: "error" 

나는 그것이 동일한 기원 정책을 포함하는 것을 같아요. YQL (하지만 추가 라이브러리를 사용하고 싶지는 않음) 및 JSONP (일반 HTML로 작업하고 있음)로 이러한 종류의 문제를 해결하는 사람들을 볼 수 있습니다. 절망의 순간에서

나는

document.domain = 'mydomain.com'; 
    jQuery.support.cors = true; 

없음 성공처럼 또한 트릭을 시도했다. 어떤 팁?


문제는 수신 응용 프로그램에서 활성화해야하는 Access-Control-Allow-Origin입니다. 제 경우에는 IIS7 호스팅에서 asp.net 응용 프로그램이었습니다. 다음 웹 사이트는 많은 서버 유형에 enable CORS 많은 구성을보고

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<system.webServer> 
    <httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
    </customHeaders> 
    </httpProtocol> 
</system.webServer> 
</configuration> 

답변

3

IE 또는 FF의 교차 출처 요청을 사용하려면 응답이있는 Access-Control-Allow-Origin 헤더를 보내려면 서버 측을 조정해야합니다. document.domain을 사용하려면 요청 측뿐만 아니라 응답 측에도 설정해야합니다. 따라서 iframe을 사용하여 이러한 요청을 보내거나 SCRIPT 또는 JSONP를 사용할 수 있습니다. 크로스 원점 제한이 없기 때문입니다.

+0

그게 효과가! 방금 올바른 서버 구성에 추가해야했습니다. 이 링크는 많은 도움이되었습니다. http://enable-cors.org/ 도움을 주셔서 감사합니다. – abx78

1

사용 JSONP 데이터

function myFunc() { 
    console.info("success"); 
} 

$.ajax({ 
    url: url, 
    'dataType': "jsonp", 
    'jsonp': "callback", 
    'jsonpCallback': "myFunc" 
}); 

문제를 얻을 : 나는 Web.config의 이러한 행을 추가했다 다른 도메인에서 XHR 요청을하는 것이 허용되지 않는다는 것입니다. 당신은 CORS를 허용하도록 jQuery에 말했지만, JSONP가 이것을 수행하는 더 좋은 방법입니다. URL이로드 될 때 호출 할 함수에서 래핑 된 JSON 데이터의 html을 반환하도록 서버 측 코드를 설정해야합니다.

+0

내가이 옵션을 고려합니다 충분합니다. 도와 줘서 고마워! – abx78

+0

매우 이해할 수 있습니다. 최근에 비슷한 문제가있는 프로젝트가있었습니다. 나는'? callback = xxx' 쿼리 문자열을 수신하고 일반 HTML 응답 대신 JSON 변수의 모든 HTML을 반환하도록 서버 측 코드를 설정합니다. 나는 내 대답에서 그것을 언급해야한다고 생각한다. – honyovk

0

으로 간단한 자바 스크립트 나는 기존의 JSON 서비스를 직면해야 할 때

alert(document.domain); 

console.log("Output;"); 
console.log(location.hostname); 
console.log(document.domain); 
alert(window.location.hostname) 

console.log("document.URL : "+document.URL); 
console.log("document.location.href : "+document.location.href); 
console.log("document.location.origin : "+document.location.origin); 
console.log("document.location.hostname : "+document.location.hostname); 
console.log("document.location.host : "+document.location.host); 
console.log("document.location.pathname : "+document.location.pathname);