ASP.NET: UrlReferer имеет неправильное значение, опрашивая на статической (webmethod) странице, вызываемой из jquery

Кто-нибудь может помочь? Я пытаюсь опросить UrlReferer, который должен содержать Google.com, но он содержит мой текущий сайт. Моя веб-страница является стандартной страницей HTM, и jquery вызывает статический метод, например

    [WebMethod]
    public static void ProcessTracking(string jsonString)

Внутри этого метода я делаю стандартный поиск на Request.UrlReferrer, как это

    string referrerDomain = HttpContext.Current.Request.UrlReferrer.Host ;

Но он всегда содержит мой текущий домен, это было немного подозрительно, поэтому я создал стандартную страницу asp.net и сделал то же самое, и она работает на 100% без проблем..

Таким образом, кажется, что когда моя страница htm вызывает через jquery, мой webmethod (статический) и опрашивает UrlReferrer это возвращение ALWAYS мой текущий сайт, который не так.

Кто-нибудь знает работу вокруг?

Я даже пытался сделать что-то в session_start и т. д. в global.asax но не исправить.

РЕДАКТИРОВАТЬ: Как я называю страницу из jquery в HTML

$.ajax({
        type: "POST",
        url: "MyService.aspx/ProcessTracking",
        data: jsonData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        success: function(msg) {

        },
        error: function(msg) {
            alert(error);
        }
    });

4 ответа

Этот скрипт размещен на вашей странице, верно? В этом случае рефералом будет ваш сайт.

Если вам нужен реферрер для самой страницы, вам нужно передать его в качестве аргумента при вызове Ajax; он не будет присутствовать в заголовке HTTP.

Вы можете прочитать реферар страницы из document.referrer имущество.

Конечно, он должен содержать ваш текущий домен, так как веб-страница делает сообщение?

Если вы хотите получить исходную страницу вызывающих абонентов, вам необходимо сохранить ее на исходной веб-странице, прежде чем вызывать код ajax, а затем передавать его.

Это работает как задумано. Когда вы используете AJAX для публикации, вы отправляете запрос со своей страницы (вашего домена!) На целевой сервер.

Один из обходных путей - сохранить имя хоста исходного реферера в переменной javascript при создании страницы:

var referrerHost = '<%= HttpContext.Current.Request.UrlReferrer.Host %>';

Затем упакуйте это в jsonData переменная, которую вы отправляете в ProcessTracking метод в ajax функция-х data параметр.

Ресурсы, вызываемые с помощью запросов AJAX, будут рассматривать вызывающую страницу в качестве реферала, поэтому ваш домен отображается в качестве реферала.

У вас была правильная идея использовать Global.asax, но попробуйте подключить метод BeginRequest:

void Application_BeginRequest(Object Sender, EventArgs e)
{
    string referrerDomain = HttpContext.Current.Request.UrlReferrer.Host ;
}
Другие вопросы по тегам