URL Referer не работает во всплывающих окнах - PullRequest
1 голос
/ 28 сентября 2011

У меня есть две страницы, а именно www.abc.com/pg1.aspx и www.abc.com/pg2.aspx

pg1.aspx
response.redirect("www.abc.com/pg2.aspx");

pg2.aspx
string url_refer = Request.UrlReferrer.ToString();

UrlReferrer работает нормально.

pg1.aspx
<a href='#' onclick=\"window.open('www.abc.com/pg2.aspx', 'windowname2', 'width=1014, height=709, screenX=1, left=1, screenY=1, top=1, status=no, menubar=no, resizable=no, toolbar=no'); return false;\">

pg2.aspx
string url_refer = Request.UrlReferrer.ToString();

UrlReferrer является NULL

Я гуглил решение. но ни один из них не ведет к решению, которое я хочу.

Моя проблема в том, что если в окне нет строки меню, статуса или панели инструментов, UrlReferrer равно NULL

если нет, то UrlReferrer имеет URL предыдущей страницы.

Я также попробовал url_refer = Request.ServerVariables["HTTP_REFERER"].ToString(); вместо string url_refer = Request.UrlReferrer.ToString();.

результат тот же.

Есть решение?

Ответы [ 5 ]

2 голосов
/ 09 ноября 2012
<a href="javascript:void(0);" onClick="MyWindow=window.open('','gallery','location=no,directories=no,menubar=no,scrollbars=no,width=550,height=550');MyWindow.location.href='yoururl.html;MyWindow.focus(); return false;">

Хитрость в том, чтобы использовать location.href, который делает запись реферера в IE.

2 голосов
/ 30 октября 2012

Мое решение - взять его из "document.referrer"

document.addEventListener('DOMContentLoaded', function () {     
    document.getElementById('hfUrlReferrer').value = document.referrer; 
})
1 голос
/ 14 октября 2015

Я нашел этот замечательный обходной путь на форуме и немного его адаптировал.

Поставьте этот код вверху страницы:

<script language="JavaScript">
function goTo(url){
   var link = document.getElementById("link");
   link.href = url;
   link.click();
}
</script>
<a id="link" target="_blank" href="javascript:void(0)"
  style="visibility:hidden;position:absolute;"></a>

... а затем создайте свои ссылки так:

<input type="button" value=google onclick="goTo('http://www.google.com')">

Что вы делаете, это создаете невидимый элемент <a>, затем используете javascript для изменения адреса этого элемента и программно «кликаете» по нему.

0 голосов
/ 29 сентября 2011

Я не уверен ... но я узнал ..

Сессия не работает, если мы вызываем новую страницу, используя Javascripts.

Мне сказали, что все значения сессии сброшенына новой странице, которая вызывается с использованием javascripts.

В качестве альтернативы для моего вопроса я использовал QueryString.

Я действительно не хочу, чтобы пользователи видели URL, но я уже скрываю URL с помощью javascript.

Итак, у меня нет проблем с использованием строки запроса, верно?

У кого-нибудь есть лучшее решение?

0 голосов
/ 28 сентября 2011

На этот вопрос нет простого ответа - в общем случае UrlReferrer зависит от браузера. Например, Chrome может обрабатывать это иначе, чем Internet Explorer.

Если вы делаете ссылку самостоятельно, то лучше всего передать параметр строки запроса или использовать состояние сеанса для идентификации ссылающегося URL.

...