2012-03-29 1 views
9

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 스크립트는 시작하지 않습니다. 해결 방법을 찾고 있습니다.

+0

+1 대신에

$('<iframe>', {src:downloadLink}).appendTo('body'); 

시도가 ... – jeroen

+0

당신은 의심의 코드를 게시 할 수 있습니까? –

+0

도메인에 호스팅 된 jQuery 사본을로드합니까? 아니면 다른 도메인 (예 : CDN)에서 가져 오는 중입니까? –

답변

4

JavaScript를 사용하여 다운로드를 트리거하는 것은 멀웨어를 배포하는 일반적인 방법입니다 (예 : 배너 광고가 광고를 게재하는 모든 사이트에서 다운로드를 트리거 할 수 있음).

"붉은 깃발"을 유발하고 보안주의 사항이 증가한다는 것은 놀라운 일이 아닙니다.

나는 유일한 옵션이 자바 스크립트를 사용하여 다운로드를 트리거하지 않는다고 생각합니다. 당신이 그것을 할 수있는 다른 방법이 있습니까?

4

"보안을 보호하는 데 도움이됩니다"라고 말하면서도 this articlewindow.location을 기반으로 할 수 있습니다.

당신이 혼자 첫 번째 라인에 대한

window.location = downloadLink; 
+0

은 대대적 인 노력 이었지만 오류 창은 계속 표시됩니다. –

관련 문제