IE8 사용자들 사이에 약간의 슬픔이 있습니다.IE8이 일부 파일 다운로드를 차단하게하는 원인은 무엇입니까?
내 사이트에서 PHP 스크립트 (file_download.php? file = X123)를 통해 파일 다운로드를 시작했습니다. 이 페이지에서 일부 데이터를 데이터베이스에 기록한 다음 헤더를 사용하여 강제로 다운로드합니다. 이 페이지의 모든 내용이 모든 브라우저에서 올바르게 작동하는 것 같습니다.
이 페이지를 어떻게 부르는가? 귀찮은 작은 "보안을 보호하기 위해 - Internet Explorer가 사이트에서 컴퓨터로 파일 다운로드를 차단했습니다."라고합니다.
일반 href 태그 <a href="/file_download.php?file=X123">download</a>
을 사용하는 경우 (IE 다운로드 차단 메시지없이) 올바르게 시작됩니다.
하지만 jQuery 스크립트를 사용하여 실행하면이 경고 메시지가 표시됩니다.
그래서 IE8이 자바 스크립트 리디렉션을 의심 할 수 있으므로 로컬 페이지에서 간단한 JS 함수를 만들었지 만 아무런 문제가 없습니다.
jQuery가 원인 일 수 있습니다. window.location 이벤트가 다른 페이지 또는 스크립트 소스에서 호출 되었기 때문입니까? 아무도 이것이 어떻게 작동 하는지를 압니까?
필자는 테스트를 계속 하겠지만, 현재이 문제에 대해 누구도 밝힐 수 있습니까? IE 설정을 조정할 것을 사용자에게 요청하는 것은 선택 사항이 아닙니다.
감사
-------- jQuery를 코드 --------------
jQuery("a").click(function(e){
if(jQuery(this).attr("href") !== undefined){
downloadLink = jQuery(this).attr("href");
thingClicked = jQuery(this);
dll_io = downloadLink.indexOf("/file_download.php?file_id=");
dll_io2 = downloadLink.indexOf("/file_download_safe.php?file_id=");
if(dll_io == 0 || dll_io2 == 0){
e.preventDefault();
jQuery.getScript("/includes/get_login.php?file_id=" + downloadLink + "&dll_io=" + dll_io + "&dll_io2=" + dll_io2 + "&last_url=" + document.URL, function(rp){
//get_login.php sets 'requested_dl_id' cookie
if(dll_io2 == 0){
window.location = downloadLink;
}else{
if(rp == "allow"){
window.location = downloadLink;
}else{
jQuery("#download_prompt").click();
}
}//end condition: if file_download_safe -> set cookie and send to page. IF file_download -> set cookie and decide to prompt or not.
});
}//end if fd == file_download.php
}//end only execute code if 'a' has a defined 'href' attribute
});
---- 갱신 ----
저는이 문제의 원인을 이해할만큼 충분히 교육 받았지만 간단한 해결책은 없습니다. IE7 & 8은 사용자가 아닌 이벤트에서 시작되는 다운로드를 자동으로 차단합니다. 따라서 onclick 이벤트는 다운로드를 시작하지만 jQuery 스크립트는 시작하지 않습니다. 해결 방법을 찾고 있습니다.
+1 대신에
시도가 ... – jeroen
당신은 의심의 코드를 게시 할 수 있습니까? –
도메인에 호스팅 된 jQuery 사본을로드합니까? 아니면 다른 도메인 (예 : CDN)에서 가져 오는 중입니까? –