회사는 이벤트 페이지를 만들고, 프로세스의 모든 인터페이스를 검색하고, 도메인 전체에 걸쳐 Ajax 요청을 하려고 합니다. 다음은 크로스 도메인 및 여러 솔루션에 대한 간략한 소개입니다.
브라우저에서 구현하는 동일 출처 정책의 제한으로 인해 XmlHttpRequest는 현재 소스(도메인 이름, 프로토콜, 포트)에서만 리소스를 요청할 수 있으므로 AJAX는 도메인 간을 허용하지 않습니다. 다음은 일반적으로 사용되는 세 가지 방법입니다.
1. jsonp 액세스
JSONP(JSON with Padding)는 스크립트 태그를 서버 측에 통합하여 클라이언트에 반환할 수 있는 비공식 프로토콜이며 크로스 플랫폼 구현은 다음에서 구현됩니다.
구현 방법
1)
<script type="text/javascript"> $.ajax({ url:url, dataType:'jsonp', data:'', jsonp:'callback', success:function(result) { }, }); </script>
2)
$.getJSON(url+"?callback=?", function(result) { });
참고: 1] jsonp는 get으로만 요청할 수 있으며, post 요청을 사용하더라도 자동으로 변환됩니다. post for you;
2] jsonp는 데이터를 얻는 데 사용할 수 있을 뿐만 아니라 데이터를 제출하는 데에도 사용할 수 있습니다.
2. damain 방법
이 방법은 기본 도메인이 동일하지만 하위 도메인이 다른 경우에 사용할 수 있습니다. 동일한 도메인 이름을 가리키도록 수정하십시오. 기본 도메인은 동일하지만 보조 도메인 이름은 서로 관련되지 않은 두 개의 URL의 경우 이 방법을 사용할 수 없습니다.
document.domain = 'a.com'
참고: 실제 개발에서는 많은 사람들이 로컬 호스트의 도메인 이름을 사용합니다. 회사의 도메인 이름과 전혀 다릅니다. 이 방법은 도메인을 변경해도 결과가 나오지 않습니다. 해결 방법은 c 드라이브의 호스트 파일을 수정하고 로컬 주소 localhost를 회사 도메인 이름으로 변경하는 것입니다. 회사의 2차 도메인 이름을 입력한 후 이 방법을 사용할 수 있습니다.
다음은 다음을 가리키는 수정된 도메인 이름입니다.
#127.0.0.1 localhost
127.0.0.1 company.com
3, postMessage
PostMessage는 h5의 새로운 기능 중 하나입니다. h5 게임, 데이터 제출 등을 용이하게 하기 위해 iframe을 중첩하는 것은 불가피합니다.
여기서는 iframe의 ID가 'iframe'이라고 가정합니다.
iframe 내부의 js에
var message = 'date';<br>if (parent.document.getElementById(‘iframe‘)) { //捕获iframe var iframe = parent.document.getElementById(‘iframe').contentWindow; //发送消息 parent.postMessage(message, "*"); }
를 작성해야 합니다. 그러면 iframe 외부의 js에
window.addEventListener('message',function(e){ },false);
를 작성해야 합니다. 메시지 데이터를 가져옵니다.
관련 권장사항:
Ajax 교차 도메인 요청 시 Parsererror 오류 솔루션
JS는 Ajax 교차 도메인 요청 플라스크 응답 콘텐츠를 구현합니다.
인스턴스는 Ajax 교차 도메인 요청의 원리를 자세히 설명합니다
위 내용은 Ajax 크로스 도메인 완벽한 솔루션 예시 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!