이틀 전에 크로스 도메인 문제를 겪었고 JSONP를 사용하여 해결할 수 있습니다. (//www.vevb.com/article/57889.htm)
최근에 정렬했습니다.
1.JSONP.
AJAX 요청, 데이터 유형은 JSONP입니다. 이 양식은 서버 측에서 콜백 ([JSON-OBJECT])을 반환하는 양식으로 요청을 조정해야합니다. 서버가 일반 JSON 객체를 반환하는 경우 그런 다음 디버깅 할 때 Chrome 브라우저의 콘솔에서 "utght SyntaxError : 예기치 않은 토큰"오류 가보고됩니다. "SyntaxError : Missing; 이전 명령문"오류는 Firefox 브라우저의 콘솔에보고됩니다.
2. Iframe 크로스 도메인.
페이지에 iframe 요소를 추가하십시오. GET 요청을 호출 해야하는 경우 iframe의 SRC를 GET 요청 URL로 설정하여 GET 요청에 대한 호출을 시작하십시오.
코드 사본은 다음과 같습니다.
var url = "http://xxx.xxx.xxx?p1=1&p2=2";
$ ( "#iframe"). attr ( "src", url); // Cross-Domain, 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 (스크립트);
4. 서버에서 처리를 사용하십시오.
프론트 엔드에서 처리하기위한 엄격한 요구 사항이없는 사람들의 경우 서버에서이를 캡슐화 한 다음 서버에서 통화를 시작하여 크로스 도메인 문제를 해결할 수 있습니다. 그런 다음 요청이 발행되었는지 또는 반환 값을 얻어야하는지에 따라 코드가 동기 또는 비동기 모드를 사용하는지 여부를 결정합니다.
코드 사본은 다음과 같습니다.
Private STATIC VOID CREATEGETHTTTPRESPONSE (String URL, Int? TimeOut, String UserAgent, CookieCollection 쿠키)
{
if (string.isnullorempty (url))
{
새로운 ArgumentNullexception ( "URL")을 던지십시오.
}
var request = webRequest.create (url)는 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); // 비동기식
// return regure.getResponse ()로 httpwebrepresponse;
}
5. 플래시 크로스 도메인
너무 절단 에지 ==, 다시 공부하십시오
요약 : 위의 5 가지 방법은 JS의 크로스 도메인 문제를 해결하는 일반적인 방법입니다. 마지막은 비교적 고급입니다. 명확하게 연구 한 후에 보충합시다.