2012-01-30 2 views
1

원격 URL을로드하려고합니다 (원격 페이지가 있는지 테스트)..ajax()를 사용하여 원격 URL로드 - 작동하지 않음

이 잘 작동합니다 :

$(function() {  
    $.ajax({ 
     url:'http://www.google.com/', 
     type: 'html', 
     success: function(content,code) { 
      alert(code); 
      $('body').html(content); 
     } 
    });   
}); 

그렇게 할 수있는 방법이 있나요 :

$(function() {  
    $.ajax({ 
     url:'localtest.html', 
     type: 'html', 
     success: function(content,code) { 
      alert(code); 
      $('body').html(content); 
     } 
    });   
}); 

그러나 스왑 원격 URL과 나는 아무 것도 얻을 수 없다?

+0

오류는 무엇입니까? Firebug를 사용하여 오류가 무엇인지 확인 했습니까? – Steve

답변

3

보안상의 이유로 AJAX는 도메인 간 호출을 지원하지 않습니다.

주위 전통적인 방법을 사용 jsonp

2

브라우저는 자원을 상호 도메인 (SOP = 동일 출처 정책)에 액세스 Ajax를 방지 할 수 있습니다. 서버가 "Access-Control-Allow-Origin"을 도메인 (또는 * 등)을 가리 키도록 구성된 경우에만 작동합니다.

+0

Access-Control-Allow-Origin은 이전 브라우저 (예 : IE)에서 작동하지 않으므로 안정적인 것으로 간주 할 수 없습니다. –

2

원격 서버가 Access-Control-Allow-Origin 헤더를 보내 명시 적으로 허용하지 않는 한 브라우저가 사이트 간 요청을 허용하지 않기 때문입니다. 존재 여부 만 테스트하려는 경우 onload 및 onerror 이벤트와 함께 이미지 태그에 URL을로드 할 수 있습니다. 그래도 원격 URL의 내용에는 액세스 할 수 없습니다. 그것은 보안을위한 것입니다. 그렇지 않으면 예를 들어 페이스 북을로드하고 누군가의 벽을 알지 못하는 채로 읽을 수 있습니다.

-1

이것은 올바른 아약스 호출이 아닙니다. 당신이 검색 작업을하고 있다고 가정 할 때 유형은 'GET'이어야합니다. 'html'은 dataType 속성입니다. 당신은 google.com에 전화를 걸기 때문에 사람이 추가 것처럼

$.ajax({ 
     url:'http://www.google.com/', 
     type: 'GET' 
     dataType: 'html', 
     success:function(content,code) 
     { 
      alert(code); 
      $('body').html(content); 
     } 
     });   
    }); 

는 또한, 당신은 때문에 도움이 같은 원산지 policy..hope의하는 JSONP 콜백을 제공해야합니다.

+0

JSONP 콜백에 관한 예제가 있습니까? 공유하십시오. –

-2

AJAX 호출에서 속성을 사용하십시오.

crossDomain: true 

콘텐츠를로드 할 HTML 페이지의 메타 데이터 태그를 확인하십시오.

+0

아무 것도하지 않습니다. 다른 출발지로 * 리다이렉트 * 될 수있는 동일한 원점 요청을하는 경우에만 중요합니다 (jQuery가 요청에 추가 헤더를 추가하지 않도록 CORS에 대한 권한을 얻기 위해 프리 플라이트 OPTIONS 요청을 요구하는 경우) 주어진 URL은 같은 원점을 가리킴). CORS의 허가를 얻기 위해 여전히 요청이있는 서버가 필요합니다. – Quentin

+0

이에 동의하자, 코드 로버 앱에서이 시나리오를 사용하고 있는데, CROS 권한을 허용하여 앱에서 원격 URL을 호출 할 수 있습니다. 그리고 완벽하게 실행됩니다. – user2417120

-1

보안상의 이유로 AJAX는 CORS (원본 교차 리소스 공유)를 지원하지 않습니다.

+0

예. CORS는 Ajax 용으로 특별히 설계되었습니다 (글꼴 및 캔버스 이미지와 같은 몇 가지 다른 것들을 위해 확장되었습니다). – Quentin

관련 문제