[jquery] http 페이지에서 https를 사용하는 Ajax

내 사이트는 http 및 https 프로토콜을 사용합니다. 콘텐츠에 영향을주지 않습니다. 내 사이트는 페이지의 일부 영역을 채우는 jQuery ajax 호출을 사용합니다.

이제 https를 통해 모든 ajax 호출을 수행하고 싶습니다. (이유를 묻지 마십시오 :)) https 프로토콜이있는 페이지에있을 때 ajax 요청이 작동합니다. http 프로토콜이있는 페이지에있을 때 javascript 오류 : 제한된 URI에 대한 액세스가 거부되었습니다.

이것이 교차 도메인 문제라는 것을 알고 있으며 (사실 교차 프로토콜 문제입니다) 현재 페이지에서와 같이 ajax 호출에서 동일한 프로토콜을 사용해야한다는 것을 알고 있습니다.

그래도 모든 ajax 호출이 https가되고 http를 통해 제공된 페이지에서 호출되기를 원합니다. 이를 달성하기위한 해결 방법이 있습니까 (일부 json / proxy 솔루션?), 아니면 단순히 불가능합니까?



답변

서버에서 Access-Control-Allow-Origin 헤더 추가

Access-Control-Allow-Origin: https://www.mysite.com

http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing


답변

JSONP를 사용해보십시오.

대부분의 JS 라이브러리는 다른 AJAX 호출처럼 쉽게 만들지 만 내부적으로는 iframe을 사용하여 쿼리를 수행합니다.

페이로드에 JSON을 사용하지 않는 경우 iframe을 중심으로 자체 메커니즘을 롤링해야합니다.

개인적으로 http : // 페이지에서 https : // 페이지로 리디렉션하겠습니다.


답변

http://example.com/https://example.com/ (호스트 헤더가 전송되지 않으므로 해당 IP에 대한 기본값에 응답)와 다른 가상 호스트로 해석 될 수 있으므로 둘은 별도의 것으로 처리됩니다. 따라서 도메인 간 JS 제한이 적용됩니다.

JSON 콜백을 사용 하면이를 방지 할 수 있습니다.


답변

오픈 소스 Forge 프로젝트를 확인하십시오. 실제 교차 도메인 요청을 처리하기 위해 일부 Flash와 함께 JavaScript TLS 구현을 제공합니다.

http://github.com/digitalbazaar/forge/blob/master/README

간단히 말해, Forge를 사용하면 http를 통해 https 사이트로로드 된 웹 페이지에서 XmlHttpRequests를 만들 수 있습니다. 교차 도메인 요청을 활성화하려면 서버를 통해 Flash 교차 도메인 정책 파일을 제공해야합니다. 작동 방식에 대한 자세한 설명을 보려면 README 끝에있는 블로그 게시물을 확인하십시오.

그러나 Forge가 두 개의 다른 https 도메인 간의 요청에 더 적합하다는 점을 언급해야합니다. 그 이유는 잠재적 인 MiTM 공격이 있기 때문입니다. 안전하지 않은 사이트에서 JavaScript 및 Flash를로드하면 손상 될 수 있습니다. 가장 안전한 용도는 보안 사이트에서로드 한 다음 다른 사이트 (보안 또는 기타)에 액세스하는 데 사용하는 것입니다.


답변

iframe에서 https 페이지를로드하고 일부 브리지를 통해 프레임 안팎으로 모든 ajax 요청을 라우팅 할 수 있습니다. 이것은 해커이지만 작동 할 수 있습니다 (보안 컨텍스트에 대해 동일한 액세스 제한을 적용할지 확실하지 않음) . 그렇지 않으면 요청을 다시 라우팅하는 로컬 http 프록시 (예 : 교차 도메인 호출)가 허용되는 솔루션입니다.


답변

내가하는 일은 다음과 같습니다.

게시하려는 데이터로 숨겨진 iFrame을 생성하십시오. 여전히 해당 iFrame을 제어하므로 동일한 출처가 적용되지 않습니다. 그런 다음 해당 iFrame의 양식을 SSL 페이지에 제출하십시오. 그런 다음 SSL 페이지는 상태 메시지가있는 비 SSL 페이지로 리디렉션됩니다. iFrame에 액세스 할 수 있습니다.


답변