Javascript 크로스 도 메 인 접근 솔 루 션
4536 단어 Javascript도 메 인 접근
도 메 인 간 크로스 를 해결 하 는 방안 은 다음 과 같 습 니 다.방안 1:서버 프 록 시 도 메 인 A 의 페이지 JS 는 도 메 인 B 의 링크 를 방문 하여 데 이 터 를 가 져 와 야 합 니 다.이 방안 은 도 메 인 A 의 서버 에 프 록 시 프로그램(ASP,servlet 등 모든 서버 프로그램 일 수 있 습 니 다)을 만 들 고 도 메 인 A 의 페이지 JS 는 도 메 인 아래 의 프 록 시 프로그램 을 직접 사용 합 니 다.proxy 프로그램 은 도 메 인 B 에 보 내 는 링크 를 요청 하고 데 이 터 를 가 져 옵 니 다.마지막 으로 프 록 시 를 통 해 데 이 터 를 페이지 JS 에 되 돌려 사용 합 니 다.도 메 인 A 아래 JS-->도 메 인 A 아래 Proxy->도 메 인 B 아래 링크 예:첫 번 째 단계:도 메 인 A: http://Jipiao.taobao.com/test.htm페이지 에 있 는 javascript 스 크 립 트:.45677913.두 번 째 단계:도 메 인 A 서버 의 Proxy 프로그램 을 완성 합 니 다(여기 서 servlet 로 가정 합 니 다).의사 코드 는 다음 과 같 습 니 다.http://Jipiao.taobao.com/test.htm 의 head 에 빈 Script 탭 을 쓰 십시오
<script type="text/javascript"><!--
Var sUrl="http://Jipiao.taobao.com/proxy.do"; //
var callback =
{
success: function(res) { alert(res.responseText); },
failure: function(res) { alert('failure');},
argument:{}
}
YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);
// --></script>
주의:이 방안 은 도 메 인 B 가 되 돌아 오 는 데 이 터 는 합 법 적 인 JSON 형식 이나 JS 파일 과 같은 형식 이 어야 합 니 다.예 를 들 어 도 메 인 B 가 돌아 오 는 데이터 형식 은 다음 과 같 습 니 다.Var reote={test:hello'};Var f=[2,1]; 프로젝트 3:iframe 숨 기기,공유 domain:즉 도 메 인 A 페이지http://jipiao.taobao.com/yyyy.htm 의 페이지 에 숨겨 진 iframe 이 라 고 쓰 여 있 습 니 다
Public class Proxy extends …….{
..doGet(……..){
HttpClient client=……;
GetMethod get=new GetMethod("www.baidu.com/xxxxx.do");// B
int statusCode = client.executeMethod(get);
if (statusCode != HttpStatus.SC_OK) {
byte[] responseBody = get.getResponseBody();
String res=new String(responseBody);
Httpresponse.getWriter().write(res);// A
}
}
}
주의:여기http://promotion.taobao.com/xxxx.htm 페이지 도 document.domain='taobao.com'을 설정 해 야 효과 가 있 습 니 다.이러한 iframe 방법 은 서로 다른 부모 도 메 인 간 의 크로스 도 메 인 에 적합 하지 않 은 이 유 는 document.domain 을 다른 도 메 인 으로 설정 할 수 있 는 것 이 아니 라 자신의 부모 도 메 인 으로 설정 할 수 있 기 때 문 입 니 다.예 를 들 어 jiapao.taobao.com 은 document.domain="taobao.com"만 설정 할 수 있 고 document.domain="baidu.com"이 아 닙 니 다.여기에 열거 한 세 가지 방안 은 각각 장단 점 이 있다.프 록 시 방안 의 장점 은 거의 모든 크로스 도 메 인 접근 에 적용 할 수 있 고 한 도 메 인 에서 개발 해 야 하 며 다른 도 메 인 은 모든 형식의 데 이 터 를 제공 할 수 있다 는 것 이다.단점 은 이 방안 이 중간 프 록 시 를 거 쳤 기 때문에 지연 이 조금 클 수 있 고 본 도 메 인 서버 의 부하 가 가중 되 며 개발 작업량 도 조금 크다 는 것 이다.Script 태그 의 방안 은 매우 간단 하 다 고 할 수 있 습 니 다.몇 줄 의 코드 없 이 일 을 해결 할 수 있 습 니 다.그러나 되 돌아 오 는 데이터 형식 에 대한 요구 가 엄격 하고 JSon 형식 데이터 일 수 밖 에 없습니다.다른 형식의 데이터 라면 어 쩔 수 없습니다.iframe 을 숨 기 는 방식 도 간단 합 니 다.되 돌아 오 는 모든 데이터 형식 을 처리 할 수 있 지만 같은 부모 도 메 인 을 가 진 크로스 도 메 인 요청 에 만 적용 되 며,다른 도 메 인 에 개발 에 협조 해 야 합 니 다.즉,document.domain 을 설정 해 야 합 니 다.원본 상세:http://blog.csdn.net/lovingprince/archive/2008/09/20/2954675.aspx JS 크로스 도 메 인 방문 의 뜻 에 대해 몇 가 지 를 더 보충 하고 싶 습 니 다.크로스 도 메 인 방문,쉽게 말 하면 A 사이트 의 자바 script 코드 가 B 사 이 트 를 방문 하려 고 하 는데 제출 내용 과 내용 을 가 져 오 는 것 을 포함한다.예 를 들 어 A 사이트 의 페이지 에서 다른 B 사이트 내 한 페이지 의 JS 대상 을 실행 하거나 A 사이트 의 페이지 에서 JS 로 B 사이트 내 한 페이지 의 dom 요 소 를 분석 하려 는 등 이다.이러한 크로스 도 메 인 접근 문제 가 발생 하 는 응용 장면 은 일반적으로 iframe 에 서로 다른 도 메 인 페이지 를 삽입 하거나 서로 다른 도 메 인 에 Ajax 요청 을 보 내 는 등 입 니 다.보안 상의 이유 로 크로스 도 메 인 접근 은 각 브 라 우 저 에 의 해 기본적으로 금 지 됩 니 다.그러나 브 라 우 저 는 페이지 에서 다른 도 메 인의 JS 파일 을 인용 하 는 것 을 금지 하지 않 고 도 입 된 JS 파일 의 function 을 자 유 롭 게 실행 할 수 있 습 니 다.그 건 개인 적 으로 중요 해!도 메 인 간 의 판단 규칙 이 세 가 지 를 비교 하 는 것 인지 여부:도 메 인 이름,프로 토 콜,포트;세 가지 중 하나 가 다 르 면 도 메 인 을 뛰 어 넘 는 문제 가 발생 할 수 있다.우리 가 자주 말 하 는 크로스 도 메 인 문 제 는 일반적으로 도 메 인 이름 이 다르다 는 것 을 말한다.왜냐하면 이런 장면 이 나타 날 확률 이 가장 높 고 해결 할 수 있 는 방법 이 있 기 때문이다.예 를 들 어 앞에서 언급 한 taobao.com 도 메 인 에서 의 2 급 도 메 인 이름 크로스 도 메 인 문제;주 도 메 인 이 다 르 거나 프로 토 콜 이 다 릅 니 다(예 를 들 어 https 와 http).도 메 인 간 문제(예 를 들 어*.taobao.com 도 메 인 에서*.baidu.com 도 메 인 내 내용 을 방문 하고 싶 습 니 다).웹 에서 해결 하려 면 전혀 불가능 합 니 다.서버 프 록 시 방안 으로 만 해결 할 수 있 습 니 다.흔히 볼 수 있 는 서로 다른 도 메 인 간 의 페이지 제약 dom 요 소 는 window.location 를 설정 할 수 있 지만 읽 을 수 없습니다.다른 location 속성 과 방법 은 접근 이 금지 되 어 있 습 니 다.document.href 는 설정 할 수 있 지만 읽 을 수 없습니다.다른 document 속성 과 방법 은 접근 이 금지 되 어 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Javascript에서 Math.max와 Math.max.apply의 차이점과 용법 상세 설명최근에 작은 사례를 만들 때 Math를 만났어요.max.apply라는 용법은 이전에 보기 드물게 재미있게 느껴졌으니 기록해 보세요. 1Math.max 문법:Math.max(n1,n2,n3,...,nX)반환값:max(...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.