2009-03-22 3 views
0

그래서 (유용한) javascript와 결합 된 (쓸모없는) html이있는 원격 페이지에서 javascrit를 가져와야합니다.javascript를 HTML과 섞어서로드하는 방법

<html> 
<body> 
<img src="/images/a.gif" /> 
<div>blah blah blah</div><br/><br/> 
var data = { date: "2009-03-15", data: "Some Data Here" }; 

</body> 
</html> 

그래서, 내 로컬 페이지에서이 데이터 변수를로드하고 사용합니다 : 페이지는, http://remote.com/data.html를 호출,이 같은 (미친 내가 아는)를 보인다.

저는 완전히 클라이언트 측 코드로 그렇게 할 수 있습니다. 로컬 자바 스크립트 변수로이 페이지의 html을 얻을 수 있다면 자바 스크립트 코드를 파싱하고 eval을 실행하여 데이터를 사용하는 것이 좋습니다. 그래서 iframe에서 원격 페이지로드를 생각했지만 dom에서 iframe을 찾을 수없는 것 같습니다. 왜 안 되니? :

첫 번째 경고는 0을 나타내며 두 ​​번째 null은 의미가 없습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

당신이 원하는 것을 신중하게 선택하십시오. 성공하면 페이지의 컨텍스트에서 신뢰할 수없는 코드 (사용자가 제어 할 수없는 경우 언제든지 변경 될 수 있음)가 실행됩니다. 드라이브 바이 악성 코드, 누구? – Piskvor

+0

물론 경보는 0과 null을 표시합니다 ... 스크립트가 실행될 때 iframe이 아직 존재하지 않습니다 ... iframe 요소 아래에 스크립트 태그를 넣으십시오 .. – James

답변

2

주문을 전환 해 보셨습니까 - iframe을 먼저 쓰고, 다음 스크립트를 사용 하시겠습니까? 스크립트는 iframe이 DOM에 삽입되기 전에 실행됩니다.

는 또한이 비슷한 상황에서 나를 위해 일한 : iframe이에게 온로드 핸들러 제공 : 크로스 사이트 스크립팅 문제에주의를 지불하지 적어도

<iframe src="http://example.com/blah" onload="do_some_stuff_with_the_iframe()"></iframe> 

마지막을 - iframe을로드 할 수 있습니다, 하지만 JS에 액세스 할 수 없게 될 수도 있습니다.

+0

onload()를 사용하면 효과가 있지만 의심 스럽지만 지금 xss 문제로 돌입니다. 나는 어떤 종류의 서버 측 솔루션을 사용해야 할 것 같아요. –

0

한 가지 옵션은 XMLHttpRequest를 사용하여 페이지를 검색하는 것입니다. 단, 교차 사이트 요청에 대해서만 현재 구현되는 것은 apparently입니다.

(보안 또는 법적 이유로) html 페이지를 검색하기 위해 클라이언트의 인터넷 연결을 사용하는 도구를 만들고 싶을 수 있음을 이해합니다. 이는 합법적 인 희망입니다.

서버 쪽에서 URL을 쿼리로 사용하고 json 청크를 문자열로 반환하는 간단한 PHP 페이지를 필요로하는 경우가 있습니다. 그렇게하면 특정 웹 사이트를 걸러 내야하는 경우 한 곳에서만이 작업을 수행하면됩니다.

필연적 인 문제는 일부 사용자는 적대적이며 자바 스크립트 프록시 란 무엇인가를 악용 할 수있는 라이선스가 있다는 것입니다. 따라서 가장 안전한 옵션은 서버에서 모든 처리를 수행하고 특정 javascript 함수 호출 (eval, http 요청 등)을 허용하지 않을 수 있습니다.

관련 문제