2010-06-17 4 views
4

jQuery를 사용하여 ajax 요청을 수행하고 성공 및 오류 조건을 처리하는 코드가 있습니다. 오류가 발생하면 URL에 무엇이 있는지 찾아보고 싶습니다. 그래서 기록 할 수 있습니다. 이 정보는 XMLHttpRequest.channel에 포함 된 것으로 나타납니다,하지만 파이어 폭스는이 액세스에 대한 불평 -XMLHttpRequest의 URL 찾기

Permission denied for <http://localhost:8081> to get property XMLHttpRequest.channel 

내가 XMLHttpRequest의와 관련된 URL을 확인하는 방법을 어떤 아이디어? 이 정보를 얻는 보안 문제는 무엇입니까? 건배,

콜린

답변

1

보안 문제는 cross domain XHR requests입니다.

는 FF2에서는 this blog 특히이 환경 설정을 참조 또한, about:config에서이 메소드를 오버라이드 (override) 할 수 있도록 사용 :

user_pref("capability.policy.default.XMLHttpRequest.channel", "allAccess"); 

을하지만 그 FF3에서 더 이상 모든 수 없습니다. 그리고 좋은 이유가 있습니다.

XMLHttpRequest.channel은 Gecko에만 해당하므로 Gecko 브라우저가 아닌 브라우저에서는 작동하지 않습니다.

+0

왜 단순히 URL이 보안상의 문제인지 아는 이유를 설명 할 수 있습니까? – mhsmith

5

좋아 -이 미안 -

$('.log').ajaxError(function(e, xhr, settings, exception) { 
    if (settings.url == 'ajax/missing.html') { 
    $(this).text('Triggered ajaxError handler.'); 
    } 
}); 

이 방법을 보여줍니다 요청에 액세스하는 방법 - 답은 여기에 특별히

http://api.jquery.com/ajaxError/

위의 링크에서이 코드 아약스 오류 발생시 URL XMLHttpRequest.channel 객체가 아무런 이유가없는 이유를 설명하지는 않습니다. 어쨌든, 그것은 비슷한 문제로 다른 사람들을 도울 것입니다.

0

방화 광이 사용 된 URI를 보여주는 추적으로이 오류를 표시합니다.

0

글쎄, 당신은 단지 추가]

XMLHttpRequest.prototype.baseOpen = XMLHttpRequest.prototype.open; 
XMLHttpRequest.prototype.open = function(method, url, async) { this._url = url; return XMLHttpRequest.prototype.baseOpen.apply(this, arguments); }; 

그런 다음 나중에 오류 처리기에서 xhr._url을 요청할 수 있습니다.

추신 : 죄송합니다. 방금 발견 된이 스레드는 오래된 것입니다.

관련 문제