2009-06-05 2 views
2

내가 가진 :은 iframe 내에서 자바 스크립트를 실행

  1. 웹 서버 (서버 1)
  2. 기존 웹 응용 프로그램의 일부 짐승을 실행하고있는 응용 프로그램 서버 (서버 2) 서버에
  3. iframe이란을 1 서버에서 응용 프로그램에서 잡아 당겨 2

내 문제는 다음과 같습니다

레거시 응용 프로그램의 형태에 JS 유효성 검사를 사용합니다. 사용자가 불완전한 양식을 제출하려고 시도하면 사용자에게 모조품임을 알리는 경고가 나타납니다. 물론 서버 1과 서버 2가 서로 다른 도메인에 있기 때문에 iframe 내부에서 앱을 실행하면 실패합니다.

내가 서버 1에 다음 프록시 지시를 설정하려고

:

ProxyPass /legacy_app http://server2.url/legacy_app 
ProxyPassReverse /legacy_app http://server2.url/legacy_app 

내가 지금 http://server1.url/legacy_app에서 iframe이 서비스를 제공 할 수있어,하지만 난 아직도 그 iframe 내에서 자바 스크립트를 실행할 수 없습니다 해요 - 내가 얻을 앱이 다른 도메인에서 실행될 때와 동일한 보안/액세스 오류.

내가 시도할만한 것이 있습니까?

+0

당신이 실행중인 웹 서버 : 그것은 여기, 도움이 경우

내가 내 index.php 파일에서 사용되는 코드입니다? –

답변

0

서버 # 1에서 호스트되지만 서버 # 2에서 참조 된 iframe이 부족한 .js 파일 내부에서 스크립트를 호스팅하려 했습니까?

브라우저가 외부 사이트를 참조하는 것이 좋지만 외부 사이트에서 참조 할 때 브라우저가 좋아하지 않는다고 생각합니다.

직접 해보지는 않았지만 이런 종류의 문제에 대해 들어 보았습니다. Google 웹 로그 분석에서 사용하는 방법이라는 것을 알고 있습니다. Google 서버에서 .js 파일을 요청해야하지만, 일단 있으면 브라우저에 액세스 할 수 있습니다.

1

상자가 채워지는 경우 기존 앱이 어떻게 확인합니까? 간단한 자바 스크립트? 아약스?

경고 상자 자체가 여전히 작동해야합니다. 경고가 발행되어야하는지 여부를 결정하는 코드가 고장난 것 같아요.

여전히 페이지가 원격 호스트에 경우에도 나에게 경고에 onLoad를 제공 내 로컬 아파치 서버에서 다음 코드를 실행 :

<html> 
    <body> 
    <div> 
     <iframe src="http://www.crowderassoc.com/javascript/alertbox.html" width="300" height="200"> 
    </div> 
    </body> 
</html> 

서버 # 1 페이지에 위의 코드를 복사 시도하고 참조 iframe의 원격 사이트에서 경고 상자를 받으면됩니다.

0

조, 내 생각에 옳은 것 같습니다. 다른 서버를 이용한 빠른 테스트를 통해 원격으로 호스팅되는 스크립트의 경고를 아주 쉽게 트리거 할 수 있음을 알 수 있습니다.

레거시 서버는 클라이언트의 것으로 우리는 쉽게 액세스 할 수는 없지만 JS에서 일종의 크로스 사이트/프레이밍 검색을하는 것처럼 보입니다. 자세한 조사가 필요합니다.

0

이전에는 원격 서버의 스크립트가 많은 기존 응용 프로그램 주위에 응용 프로그램을 만들려고했던이 상황을 겪었습니다. 응용 프로그램이 자체 창에서 열리면 제대로 실행되지만 프레임에로드하려고 시도하면 끊어집니다.

내가이 프로젝트에서 수행 한 작업은 495px 폭의 팝업으로 로컬 애플리케이션을 여는 것이었고, 메인 (이미 존재하는) 윈도우에 외부 앱을로드하고 메인 외부 앱 윈도우의 크기를 화면에 맞게 조정하는 것이 었습니다 너비에서 495 픽셀을 뺀 다음 화면에 나란히 놓습니다. 이로 인해 최종 사용자는 프레임을 사용하여 작업 한 것과 비슷한 효과를 얻을 수 있었지만 효과가있었습니다.

// Manipulating the current window 
window.location.href = 'http://www.someExternalApp.com'; // setting the page location. 
window.name = 'legacyapp'; // setting the window name just the for heck of it. 
moveTo(0,0); // moving it to the top left. 

// Resizing the current window to what I want. 
mainWindowWidth = screen.width - 495; 
mainWindowHeight = screen.height; // Makes the window equal to the height of the users screen. 
resizeTo(mainWindowWidth,mainWindowHeight); 

// function for opening pop-up 
function openWin(){ 
    win2 = window.open(page,'',winoptions); 
    win2.focus(); 
} 

// internal app location (for use in pop-up) 
page = 'someLocalApp.php'; 

// internal app Window Options (for pop-up) 
winoptions = 'width=490,height='+mainWindowHeight+',top=0,left='+mainWindowWidth+'leftscrollbars=1,scrolling=1,scrollbars=1,resizable=1,toolbar=0,location=0,menubar=0,status=0,directories=0'; 

// Opens the local app pop-up 
openWin();