16

IE8에서 Microsoft의 XDomainRequest 개체를 사용하는 코드가 있습니다. 코드는 다음과 같습니다.XDomainRequest를 SSL과 함께 사용할 수 있습니까?

var url = "http://<host>/api/acquire?<query string>"; 
var xdr = new XDomainRequest(); 
xdr.onload = function(){ 
    $.("#identifier").text(xdr.responseText); 
}; 
xdr.open("GET", url); 
xdr.send(); 

"url"의 구성표가 "http : //"이면 명령이 정상적으로 작동합니다. 그러나 구성표가 "https : //"이면 IE8에서 "액세스 거부"JavaScript 오류가 발생합니다. 두 스키마 모두 FF 3.6.3에서 제대로 작동합니다. 여기서 FFML은 XmlHttpRequest를 사용합니다. 두 브라우저 모두 W3C 액세스 제어를 준수하고 있습니다. "http : //"는 두 브라우저 모두에서 교차 출처를 사용합니다. 따라서 문제는 IE8, XDomainRequest 및 SSL입니다.

SSL 인증서는 문제가 아닙니다. IE8의 주소 표시 줄에 https : // <host> /을 입력하면 <host>은 위의 "url"과 동일하지만 페이지가 올바르게로드됩니다.

다음과 같이 표시됩니다.
- 브라우저에서 직접 https : // <host> /를 입력하면됩니다.
- https : // <host>/api/acquire를 누르십니까? <query string> via XDomainRequest는 허용되지 않습니다.

할 수 있습니까? 나는 뭔가를 남겨두고 있습니까?

답변

18

분명히 대답은 여기에 있습니다 :이 페이지 http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

포인트 7은 말한다, "요청이 호스팅 페이지와 같은 체계를 대상으로해야합니다."

"확실히 그 시나리오가 혼합 콘텐츠 보안을 제공으로, HTTP 기반의 자원 XDomainRequests을 만들기에서 HTTPS 페이지를 방지하기 위해 우리의 의도했다 : 여기

점 7에 대한 지원 텍스트의 일부입니다 위협하는 많은 개발자 대부분의 사용자는 이해가 안 돼요.

을하지만,이 제한이 너무 광범위하다고, 그것은 HTTPS 페이지를 대상으로 XDomainRequests을 발행에서 HTTP를 페이지를 방지하기 때문에.이 사실 t이지만 HTTP 페이지 자체가 손상되었을 수 있으므로 이유가있어 공용 리소스를 안전하게 수신 할 수 없도록해야합니다. . "

내 원래 질문에 대한 답변은 다음과 같습니다. 호스팅 페이지에서 "https : //"체계를 사용할 수 있다면 예; 그렇지 않으면 불가능합니다.

+1

fwiw, 호스팅 페이지가 https를 통해 제공되고 요청 된 도메인이 호스팅 페이지의 하위 도메인 인 경우에도 https URL에 대한 XDR 요청에 문제가 있습니다. '둘 모두에 http를 사용하면 작동합니다. 하나. – broofa

+1

요청 페이지가 https 인 경우에도 https를 사용하는 XDR에서 운이 없었습니다. 'onerror' 이벤트 (콜백은 유용하게 제로 정보가 주어짐)를 단순히 트립합니다. 내 개발 컴퓨터에있는 두 개의 가상 호스트 사이에서 통신 중이며 & 그게 아무 상관이 있는지 궁금해하기 시작했습니다 (자체 서명 된 인증서?). –

+0

@SethBro 예 저는 현재 작업중인 프로젝트의 자체 서명 인증서에 대해 궁금합니다. – the0ther