2012-12-04 4 views
0
나는 아약스 호출을 가로 채기 위해 다음과 같은 자바 스크립트 코드를 사용하고

:
https://example.com/js/main.js
https://example.com/js/intercept.js아약스 자바 스크립트 차단

:

XMLHttpRequest.prototype.realOpen = XMLHttpRequest.prototype.open; 
var newOpen = function(method, url, async, user, password) { 
    console.log("Intercepted open (" + url + ")"); 
    this.realOpen(method, url, async, user, password); 
} 
XMLHttpRequest.prototype.open = newOpen; 

아약스 통화 및 위의 코드를 수행하는 자바 스크립트에서로드됩니다 위 코드는 ajax 호출 용 도메인이 "example.com"인 경우 잘 작동하지만 ajax 호출이 "sub.example.com"도메인 용으로 만들어지면 위 코드는 해당 요청을 가로 챌 수 없습니다.

아무도 왜 작동하지 않을지 알고 있습니까?

+0

"작동하지 않음"이란 무엇입니까? 도메인 간 요청이므로 예외적으로해야합니다. – xiaoyi

+0

아니요 콘솔에 오류/예외가 없습니다. "작동하지 않음"이란 말은 "sub.example.com"에 대한 ajax 요청이 도청되지 않는다는 의미입니다. console.log 항목이 표시되지 않습니다. 피들러 (Fiddler)를 통해 모든 브라우저 트래픽을 프록시 처리해야하므로 요청 사항을 확실히 알고 있습니다. – yatin

+0

[CORS] (https://developer.mozilla.org/en-US/docs/HTTP_access_control)는 두 개의 요청으로 구성됩니다. 먼저 다른 페이지에서 현재 도메인의 요청을 허용하는지 확인한 다음 두 번째 요청에서 실제 요청을 보냅니다. 하나. 그래서 만약 당신이 단지 하나만 보게된다면, 문제가 있습니다. – xiaoyi

답변

1

example.com 및 sub.example.com은 (는) 다른 도메인으로 간주되므로 피해자는 same origin policy 인 것으로 보입니다.

+0

iframe에 "sub.example.com"으로 설정된 document.domain이있는 동일한 스크립트로 iframe을 추가하면 iframe에 작동합니다. – yatin

+0

예, 그렇지만 크로스 도메인 메시징과 같은 기술을 사용하여 기본 창과 iframe 간의 통신 방법을 파악해야합니다. 또한 CORS 또는 JSONP와 같은 기술은 도메인 간 문제를 우회하지만 모든 브라우저 또는 서버에서 지원되지는 않습니다. – Christophe

관련 문제