>  기사  >  웹 프론트엔드  >  jquery는 클라이언트 교차 도메인 액세스 문제를 해결합니다_jquery

jquery는 클라이언트 교차 도메인 액세스 문제를 해결합니다_jquery

WBOY
WBOY원래의
2016-05-16 16:22:13960검색

클라이언트 측 "교차 도메인 액세스"는 항상 골치 아픈 문제였습니다. 다행히도 jQuery의 도움으로 jQuery-1.2 이후로 도메인 간 문제가 해결되었습니다. 프로젝트에서 크로스 도메인 문제에 직면했기 때문에 이 기회를 통해 크로스 도메인 문제를 조사하고 관련 정보와 내 실무를 상담하여 마침내 크로스 도메인 문제를 해결했습니다. 참고용으로 녹음하세요.

jQuery.ajax()는 실제로 jsonp를 사용하여 수행되는 도메인 간 가져오기 메서드를 지원합니다.

실제 사례:

코드 복사 코드는 다음과 같습니다.

$.ajax({
비동기:거짓,
​​​​​​ url: 'http://www.mysite.com/demo.do', // 크로스 도메인 URL
            유형: 'GET',
데이터 유형: 'jsonp',
               jsonp: 'jsoncallback', //기본 콜백
데이터: 마이데이터,
시간 초과: 5000,
                beforeSend: function(){ //이 메서드는 jsonp 모드에서는 트리거되지 않습니다. 이유는 dataType이 jsonp로 지정되면 더 이상 ajax 이벤트가 아니기 때문일 수 있습니다
            },
성공: 함수(JSON) {// 클라이언트 JQuery의 사전 정의된 콜백 함수입니다. 크로스 도메인 서버에서 JSON 데이터를 성공적으로 얻은 후 이 콜백 함수는
If(json.actionErrors.length!=0){
경고(json.actionErrors)
~                     genDynamicContent(qsData,type,json)
             },
완료: 함수(XMLHttpRequest, textStatus){
                      $.unblockUI({ fadeOut: 10 });              },
​​​​​​ 오류: 함수(xhr){
밖으로 나가서 밖으로 나가고 싶어 밖으로 나가기 out over through out over over over over so so so so so so so so so so so so so so so so so so so so so so so so so so so 그래서 그래서 그래서 그래서 그래서 그래서 그래서 그렇게 에 에 에 에 에 에 에 에 에 에 던지려고 에 에 이 메소드와 이 메소드 메소드 메소드 메소드 메소드 메소드 대 메소드 메소드에서 메소드 메소드 트리거하지 않음
//오류 처리 요청
Alert("요청 오류(해당 네트워크 상태를 확인해주세요.)");                }
        });



참고:

코드 복사 코드는 다음과 같습니다. $.getJSON("
http://www.mysite.com/demo.do?name1=" value1 "&callback
=?",
              함수(json){ If(json.property name==value){ //코드 실행
~          })

이 방법은 실제로 위 예에서 $.ajax({..}) API의 고급 캡슐화입니다. $.ajax API의 기본 매개변수 중 일부는 캡슐화되어 표시되지 않습니다.

서버 측에서는 callback= request.getParameter("callback")을 사용하여 나중에 jQuery 측에서 다시 호출할 jsonp32440980을 가져옵니다.
그런 다음 다음과 같이 반환합니다: "jsonp32440980(" 반환할 json 배열 ")"
jquery는 콜백 메소드를 통해 이를 동적으로 로드하고 호출합니다: jsonp32440980 (json array); 이는 도메인 간 데이터 교환의 목적을 달성합니다.
jsonp의 가장 기본적인 원칙은 동적으로 하나를 추가하는 것이 일관성이 있다는 것입니다(qq 공간은 이 방법을 사용하여 도메인 간 데이터 교환을 달성합니다). JSONP는 일종의 스크립트 주입(ScriptInjection) 동작이므로 일정한 보안 위험도 있습니다.

참고: jquey는 도메인 간 게시를 지원하지 않습니다.

이는 iframe을 동적으로 생성하기 위해 post를 사용하면 post cross-domain의 목적을 달성할 수 있기 때문입니다(js 전문가가 jquery1.2.5를 패치한 방법임). 이는 상대적으로 극단적인 방법이므로 권장되지 않습니다. get의 도메인 간 액세스 방법은 합법적이며 post 방법은 보안 측면에서 불법으로 간주되므로 클라이언트에서 도메인 간 액세스를 요구하는 최후의 수단으로 게시하지 않는 것이 좋습니다. 정보에 따르면 html5 WebSocket 표준은 도메인 간 데이터 교환을 지원하며 향후 선택적 도메인 간 데이터 교환 솔루션이 되어야 합니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.