C# ASP.NET:UrlReferer的值错误,在从jquery调用的静态(webmethod)页面中进行查询
有人能帮忙吗?我试图询问UrlReferer,为什么它应该包含Google.com,但它包含我当前的网站。我的网页是一个标准的HTM页面,jquery调用一个静态方法,如下所示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
[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值。因此,虽然这个值可能有用,但并不总是可靠的。