전방 크로스 해결 방법의 window.name+iframe
2111 단어 기술 공유
우선, 우리는 윈도에 관해 알아야 한다.name의 이러한 기능: name 값은 서로 다른 페이지 (심지어 다른 도메인 이름) 에 불러온 후에도 존재하며, 매우 긴name 값 (2MB) 을 지원합니다.다시 말하면name 속성은 페이지의 URL 변화에 따라 달라지지 않으며, 이것은 전역에 기회를 제공한다.
우리는 원본 페이지에서 iframe 탭을 이용하여 요청할 목표 페이지를 끼워 넣고 목표 페이지에 window를 설정할 수 있습니다.요청한 정보를 window에 부여하는 속성.name.그러나 문제가 생겼다. 두 페이지가 서로 다른 영역에 있기 때문에 원본 페이지는 목표 페이지의name 값을 얻을 수 없다. 왜냐하면name 값은 같은 영역에 있는 페이지만 볼 수 있기 때문이다.이 때, 우리는 iframe을 원본 페이지와 같은 영역에 있는 에어로 되돌려야 한다.html 페이지(즉 빈 페이지, 여기서 중전의 역할을 충당)는 이때의name값이 변하지 않는다면 우리는 그것을 얻을 수 있다.
코드 예:
http://www.a.com/origin.html아래와 같다
Document
function getData ( url, fn ) {
var oIframe = document.createElement('iframe'),
firstBtn = true,
loadFn = function () {
if ( firstBtn ) {
// air.html, name
oIframe.contentWindow.location = 'http://www.a.com/air.html';
firstBtn = false;
} else {
fn( oIframe.contentWindow.name );
oIframe.contentWindow.document.write('');
oIframe.contentWindow.close();
document.body.removeChild(oIframe);
oIframe.src = '';
oIframe = null;
}
};
oIframe.src = url;
//1. iframe , loadFn , iframe air.html
//2.air.html , loadFn , else
if ( oIframe.attachEvent ) {
oIframe.attachEvent( 'onload', loadFn );
} else {
oIframe.onload = loadFn;
}
document.body.appendChild(oIframe);
}
// getData
window.onload = function () {
getData( 'http://www.b.com/target.html', function ( data ) {
console.log( data );
} );
}
http://www.b.com/target.html다음과 같습니다.
Document
window.name = ' ';
참조 기사: window를 사용합니다.도메인 간 문제 해결name
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Springboot 프로젝트에서 ip2region이 겪는 문제와 궁극적인 해결 방법을 통합합니다1. 문제 회고 ip2region 프로젝트의 공식에 따라springboot 프로젝트에 통합된 후 테스트를 실행하면 모든 것이 ok이며 아무런 문제가 없습니다.그러나 프로젝트가 실행 가능한jar 패키지로 만들어진 후에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.