2010-01-19 5 views
1

this AJAX example의 코드를 수정하여 Google로부터 결과를 얻고 싶습니다.Google에서 결과를 얻으려는 AJAX 요청

나는 Random() 메서드 호출을 사용하여 줄을 가져 왔지만 JavaScript에서 쿼리 문자열을 사용하려면 어떻게해야합니까? 수동으로 요청을 작성하려면 XMLHttpRequest을 사용하여이 작업을 가장 잘 수행 할 수 있습니다 (테스트 용이므로 프레임 워크 사용과 달리 수동으로 수행해야합니다).

감사

답변

3

당신은 http://www.google.com/... 같은 절대 URL로 XMLHttpRequest을 사용할 수 없습니다.

브라우저가 cross-site scripting을 방지합니다. 상대 경로를 사용해야합니다. 그렇지 않으면 대부분의 브라우저에서 빈 responseText 만 반환합니다.

한 가지 가능한 해결 방법으로, 매우 간단한 reverse proxy (Apache에있는 경우 mod_proxy 사용)을 설정할 수 있습니다. 이렇게하면 HTTP 서버가 "원격"위치에 대한 프록시 역할을하는 동안 AJAX 요청에서 상대 경로를 사용할 수 있습니다.

mod_proxy에 역방향 프록시를 설정하는 기본 구성 지정 문은 ProxyPass입니다. 다음과 같이 일반적으로 사용합니다 :

ProxyPass  /ajax/  http://www.google.com/search 

를이 경우, 브라우저는 /ajax/?hl=en&source=hp&q=test를 요청하지만 실제로 서버가 http://www.google.com/search?hl=en&source=hp&q=test에 대한 프록시 역할을하여이 서비스를 제공 할 것입니다.

IIS를 사용하는 경우 Managed Fusion URL Rewriter and Reverse Proxy을 사용하여 역방향 프록시를 설정할 수 있습니다.

+0

그래서 동일한 서버에만있는 상대 URL은 무엇입니까? 내 바탕 화면에서 로컬 파일을 사용할 수 있습니까 (예 : 읽기)? – dotnetdev

+0

기본적으로 예입니다. 파일은 제공된 w3schools 예제의 파일과 같은 상대 URL로 액세스해야합니다. 그러나 리버스 프록시를 사용하여 가능한 해결 방법에 대한 내 업데이트 된 답변을 확인하십시오. –

+0

좋은 답변입니다. 한 가지 : 로컬 브라우저에서 페이지를 실행해도 같은 폴더에있는 파일로 작업 할 수 있습니까? 지역에서만. 오늘이 시도했지만 0 (기본적으로 채워진 .txt 파일을 읽습니다). – dotnetdev