2010-03-21 5 views
0

나는 php가 아니라 javascript/jquery로 URL을 가져와야합니다.javascript/jquery를 사용하여 URL을 가져 오는 방법은 무엇입니까?

나는 당신이 PHP 프록시를 가지고 있다면 그것을 할 수 있다고 읽었지만, 그것은 여전히 ​​PHP를 거치고 있음을 의미한다. 왜냐하면 여전히 서버를 가져 오는 서버의 IP이기 때문입니다.

프런트 엔드 만 사용하여 URL 전체를 가져와 클라이언트의 IP로 가져올 수 있습니까?

답변

5

AJAX 요청에 대해 Same origin policy이 있습니다. 이렇게하면이 사이트의 Javascript가 gmail.com에 요청 ​​(쿠키 포함), 전자 메일 읽기, StackOverflow 서버로 업로드되지 않게됩니다. stackoverflow.com의 Javascript는 해당 도메인의 페이지에만 AJAX 요청을 할 수 있습니다.

이것은 보안을 유지하는 데 필수적입니다. 요청은 웹 서버에서 실행되는 프록시에 의해 만들어 져야합니다. PHP는 사용할 수 있지만 다른 솔루션이 있습니다. 예를 들어 Ajax Cross Domain은 다른 도메인에 대한 AJAX 요청을 에뮬레이트하기 위해 서버에서 실행중인 Perl 스크립트와 통신하는 AJAX 라이브러리입니다.

자바 스크립트 포함 (스크립트 태그), 이미지 태그 등을 통해 다른 도메인에서 요청할 수도 있지만 이러한 경우 페이지 내용을 읽을 수 없습니다.

iframe을 사용하여이 작업을 수행 할 수 없습니다. 스크립트가 iframe의 내부를 스크립트와 동일한 도메인에 있지 않으면 볼 수 없습니다.

즉, 프록시를 사용하십시오.

+0

그래서 서버의 IP 주소로 페이지를 가져와야한다는 의미입니까? 클라이언트의 IP로 가져올 수있는 방법이 없습니다. 그런 다음 결과를 다시 내 서버로 보냅니다. 하지만 Google지도 api는 자바 스크립트만으로 요청을 할 수 있으므로 클라이언트의 IP에서 결과를 얻을 수 있습니까? 그런데 왜 그게 작동합니까? –

+0

Google지도 API를 사용하면 Google 서버에서 자바 스크립트를로드 할 수 있습니다. 아무런 문제가 없습니다. 자바 스크립트를 실행할 수는 있지만 파일의 내용은 볼 수 없습니다. 타일 ​​이미지 등은 Google 서버에 있지만 외부 이미지에 대한 링크는 항상 허용됩니다. 몇 가지 (라우팅, 지오 코딩)의 경우 API는 특별한 요청이있는

2

문제는 jQuery가 AJAX를 사용하여 URL을 가져오고 AJAX가 잠재적 보안 (same-origin policy에 따라)으로 인해 도메인 간 작동하지 않는다는 것입니다.

그러나 iframe에서 페이지를로드하면 iframe에서 innerHTML을 사용하여 데이터를 검색 할 수 있습니다. 다음은 jQuery를 사용하는 스크립트 예입니다. http://code.google.com/p/jquery-crossframe/

+2

최신 브라우저는 교차 도메인 프레임의 'innerHTML'을 가져올 수 없습니다. –

+0

맞습니다. 단편을 통해서만 iframe과 통신 할 수 있습니다. 나는 이것이 여전히 가능했다는 인상하에 있었다. – Wolph

관련 문제