Web Source2015. 9. 4. 17:53

네이버에서는 검색이 어려운 블로그입니다. 구글검색을 이용해 주세요.



IE 에서 referer 가 안된다.


referer 가 안되는 경우는

1. 주소를 직접 입력한 경우

2. 즐겨찾기로 이동한 경우

3. location.href 로 이동한 경우 (IE 만 안되는것 같다)


referer 가 다 되는 경우는 a 태그로 할 경우이다.


http://dev.jeffersonscher.com/php/show_referer.php


$RF=$_SERVER['HTTP_REFERER'];

if(!preg_match('/tistory/', $RF)||strlen($RF)==0) {

$msg='비 정상적인 접근입니다.';

$submit=false;

}


조금 찾아보니 IE는 보안페이지에서만 된다는 듯...

그리고 IE는 location.href 로 이동할 경우 주소창에 입력한 것처럼 처리하여 referer 전달이 안된단다.

헤더를 전송하지 않는 것이다.


그런데 위 페이지의 내용을 참고하였더니...
PHP 맨 위에 아래의 두 줄을 추가하였더니 될 때도 있고 안될 때도 있다 ㅠ
둘 중 하나 때문인것 같긴 하지만....
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Content-Type: text/html; charset=utf-8");

원문

================================================================

<?php

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Content-Type: text/html; charset=utf-8");

?>

<!DOCTYPE html>

<html>

<head>

<title>Show HTTP_REFERER</title>

<style type="text/css">

p {font-family:sans-serif; font-size:20px;}

</style>

</head>

<body>

<p>Result of <code>echo $_SERVER["HTTP_REFERER"]</code>: <strong>

<?php 

echo $_SERVER["HTTP_REFERER"];

?>

</strong></p>

<p><a href="show_referer.php">Link to self (anchor tag)</a> 

<a href="show_referer.php" onclick="window.location.href=this.href; return false;">Link to self (location.ref)</a> 

<a href="show_referer.php" onclick="window.open(this.href, '_top'); return false;">Link to self (window.open)</a></p>

<textarea rows="10" cols="100">

</textarea>

</body>

</html>



가장 확실한 방법인것 같다.

http://www.webdeveloper.com/forum/showthread.php?163391-IE-does-not-pass-referer


<html>

<head>

   <title>Redirect w/Referrer in Internet Explorer</title>

   <script type="text/javascript">

      function redirect(url) {

        var theLink = '';

        if (document.getElementById) {

           theLink = document.getElementById('redirect_link');

           if (!theLink) {

              theLink = document.createElement('a');

              theLink.style.display = 'none';

              theLink.id = 'redirect_link';

              document.body.appendChild(theLink);

           }

           if (url) theLink.href = url;

        }

        if ((theLink) && (theLink.click)) theLink.click();

        else location.href = url;

      }

   </script>

</head>

<body>

<p><a id='redirect_link' href='http://www.mydomain.com/info.php'>Click Here to redirect</a></p>

<script type="text/javascript">

   redirect('http://www.mydomain.com/info.php');

</script>

</body>

</html>



IE 팝업창일 경우

빈 팝업창을 띄운 후 창 이름으로 링크를 보내는 방법이다.

IE11 에서는 경우에 따라 빈 팝업창이 뜨고 새탭으로 원하는 페이지가 열리는 문제가 있다...

https://www.google.co.kr/?gws_rd=ssl#q=ie11+target+popup

https://www.google.co.kr/?gws_rd=ssl#q=ie11+form+target+popup


var refer=document.createElement('a');

refer.href=url;

refer.target='popupname';

refer.style.display='none';

document.body.appendChild(refer);

window.open('', 'popupname', 'width=500, height=500, resizable=no, status=no, scrollbars=no');

refer.click();


추가:

아래처럼 하면 잘 된다는 글을 본 기억이 있는데 테스트는 나중에....


var refer=document.createElement('a');

refer.href=url;

refer.target='popupname';

refer.style.display='none';

document.body.appendChild(refer);

window.open('about:blank', 'popupname', 'width=500, height=500, resizable=no, status=no, scrollbars=no');

refer.click();



Posted by 영육치료