> 웹 프론트엔드 > JS 튜토리얼 > js 크로스 도메인 문제를 처리하는 5가지 방법 요약_javascript 기술

js 크로스 도메인 문제를 처리하는 5가지 방법 요약_javascript 기술

WBOY
풀어 주다: 2016-05-16 16:29:16
원래의
1487명이 탐색했습니다.

이틀 전에 도메인 간 문제가 발생했는데 jsonp를 사용하여 해결할 수 있습니다. (http://www.jb51.net/article/57889.htm)

최근 정리한 내용:

1.jsonp.

Ajax 요청, dataType은 jsonp입니다. 이 양식에서는 콜백([json-object])을 반환하도록 서버 측에서 요청을 조정해야 합니다. 서버가 일반 json 객체를 반환하는 경우. 그런 다음 디버깅할 때 "Uncaught SyntaxError: Unexpected token" 오류가 Chrome 브라우저 콘솔에 보고됩니다. "SyntaxError: 누락; before 문" 오류가 Firefox 브라우저 콘솔에 보고됩니다.

2.iframe 크로스 도메인.

페이지에 iframe 요소를 추가하세요. get 요청을 호출해야 하는 경우 iframe의 src를 get 요청의 URL로 설정하여 get 요청 호출을 시작하세요.

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

var url = "http://xxx.xxx.xxx?p1=1&p2=2";
$("#iframe").attr("src", url);//교차 도메인, iframe 사용

iframe 메서드는 jsonp보다 강력합니다. http 요청을 처리하는 것 외에도 도메인 전체에 걸쳐 js 호출을 구현할 수도 있습니다.

3. 스크립트 요소의 src 속성 처리

iframe, img, style, script 및 기타 요소의 src 속성은 서로 다른 도메인의 리소스를 직접 요청할 수 있습니다. jsonp는 스크립트 태그를 사용하여 도메인 간에 리소스를 요청하는 간단한 구현이므로 기본적으로 jsonp와 동일합니다. 서버 측 요청 반환 콜백... 양식이 필요합니다.

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

var url="http://xxx.xxx.xxx?p1=1";
var script = document.createElement('script');
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);

4. 서버에서 get 처리를 사용합니다.

프런트 엔드 처리에 대한 엄격한 요구 사항이 없는 비즈니스의 경우 이를 서버 측에서 캡슐화한 다음 서버 측에서 호출을 시작하면 도메인 간 문제를 해결할 수 있습니다. 그런 다음 요청이 전송되는지 또는 반환 값을 가져와야 하는지에 따라 코드는 동기 또는 비동기 모드를 사용합니다.

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

        private static void CreateGetHttpResponse(문자열 url, int? timeout, 문자열 userAgent, CookieCollection 쿠키)
        {
            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentNullException("url");
            }
            var request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "GET";
            if (!string.IsNullOrEmpty(userAgent))
            {
                request.UserAgent = userAgent;
            }
            if(timeout.HasValue)
            {
                request.Timeout = timeout.Value;
            }
            if (쿠키 != null)
            {
                request.CookieContainer = 새로운 CookieContainer();
                request.CookieContainer.Add(쿠키);
            }
            request.BeginGetResponse(null,null);//异步
            //request.GetResponse()를 HttpWebResponse로 반환합니다.
        }

5.flash跨域

过于尖端了==,再研究

总结:以上5种方法就是常见的解决js跨域问题적 관리 방법론, 最后一种比较高端,等我研究清楚了再补上姧.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿