0

任何人都可以帮忙吗?我正在尝试询问应该包含 Google.com 的 UrlReferer,但它包含我当前的站点。我的网页是一个标准的 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我什至尝试在etc 中做一些事情,global.asax但没有修复。

编辑:我如何在 html 中从 jquery 调用页面

$.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

4 回答 4

1

该脚本托管在您的页面上,对吗?在这种情况下,推荐人将是您的网站。

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

document.referrer您可以从属性中读取页面的引用者。

于 2009-12-02T14:07:24.340 回答
0

当然它应该包含您当前的域,因为那是在发帖的网页?

如果要检索原始调用者页面,则需要在调用 ajax 代码之前将其存储在原始网页中,然后将其传递。

于 2009-12-02T14:07:35.090 回答
0

通过 AJAX 请求调用的资源会将调用页面视为引用者,这就是您的域显示为引用者的原因。

您使用 Global.asax 的想法是正确的,但请尝试使用 BeginRequest 方法:

void Application_BeginRequest(Object Sender, EventArgs e)
{
    string referrerDomain = HttpContext.Current.Request.UrlReferrer.Host ;
}
于 2009-12-02T14:07:49.253 回答
0

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

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

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

然后将其打包到jsonData您要发送到函数参数中的ProcessTracking方法的变量中。ajaxdata

于 2009-12-02T14:08:06.693 回答