C# ASP.NET:UrlReferer的值错误,在从jquery调用的静态(webmethod)页面中进行查询

C# ASP.NET:UrlReferer的值错误,在从jquery调用的静态(webmethod)页面中进行查询,c#,asp.net,referrer,request.servervariables,C#,Asp.net,Referrer,Request.servervariables,有人能帮忙吗?我试图询问UrlReferer,为什么它应该包含Google.com,但它包含我当前的网站。我的网页是一个标准的HTM页面,jquery调用一个静态方法,如下所示 [WebMethod] public static void ProcessTracking(string jsonString) 在这个方法中,我对Request.urlReferer执行标准查找,如下所示 string referrerDomain = HttpContext.Current

有人能帮忙吗?我试图询问UrlReferer,为什么它应该包含Google.com,但它包含我当前的网站。我的网页是一个标准的HTM页面,jquery调用一个静态方法,如下所示

    [WebMethod]
    public static void ProcessTracking(string jsonString)
在这个方法中,我对Request.urlReferer执行标准查找,如下所示

    string referrerDomain = HttpContext.Current.Request.UrlReferrer.Host ;
但它总是包含我当前的域,这有点可疑,所以我创建了一个标准的asp.net页面,并做了同样的事情,它100%正常工作

因此,当我的htm页面通过jquery调用我的webmethod(静态)并询问
URLreferer
时,它会返回
始终
我的当前站点,这是错误的

有人知道附近的工作吗

我甚至试着在
global.asax中的
session\u start
等中做一些事情,但没有修复

编辑:我如何从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);
        }
    });

那个脚本就在你的页面上,对吗?在这种情况下,推荐人将是您的网站

如果您想要页面本身的引用,那么您需要在Ajax调用中将其作为参数传递;它不会出现在HTTP头中


您可以从
文档中读取该页面的引用者。引用者
属性。

它肯定应该包含您当前的域,因为这是正在发布文章的网页


如果要检索原始调用方页面,则需要在原始网页中存储该项,然后调用Ajax代码,然后将其传递。

< P>通过Ajax请求调用的资源将考虑调用页作为引用者,这就是为什么您的域作为引用者出现的原因。p> 您使用Global.asax的想法是正确的,但请尝试使用BeginRequest方法:

void Application_BeginRequest(Object Sender, EventArgs e)
{
    string referrerDomain = HttpContext.Current.Request.UrlReferrer.Host ;
}

这是工作的预期。当您使用AJAX进行post时,您正在从页面(您的域!)向目标服务器发送请求

一种解决方法是在构建页面时将原始引用人的主机名存储在javascript变量中:

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

然后将其打包到
jsonData
变量中,该变量将被发送到
ajax
函数的
data
参数中的
ProcessTracking
方法中。

只是关于URLreferer的一个小警告。我注意到,在特定配置下,某些客户端安全软件或防火墙(如Norton、McAfee等)可能会从任何传出请求中删除URLreferer值。因此,虽然这个值可能有用,但并不总是可靠的。