获取来源/引荐来源网址以进行用户注册

时间:2018-11-14 11:24:35

标签: c# asp.net-mvc referrer

我有一段经过测试的简单用户注册代码:

   ReferrerURL = Request.UrlReferrer.AbsoluteUri

该属性是在用户注册到网站时为其设置的。

例如,如果用户通过某些广告点击了该网站,那么我想从他的来源获得原始网站。

使用这段代码,我只会得到自己站点的网址,如下所示:

example.com/Registration

无论用户来自何处...还有其他方法可以从用户最初来自的地方获取该信息(如果有的话)-如果没有,则只需将该字段保留为空...

[ValidateAntiForgeryToken]
public async Task<ActionResult> DoRegister(UserRegistrationViewModel model)
{
    var user = new Users()
    {
       FirstName = model.FirstName,
       LastName = model.LastName,
       Email = model.Email,
       CountryId = 230,
       Active = false,
       PasswordSalt = salt,
       PasswordHash = PasswordHelper.CreatePasswordHash(model.Password, salt),
       GUID = _guid,
       HasSpecialSubscription = false,
       TotalScans = 0,
       IsFreeTrialExpired = false,
       DateOfRegistration = DateTime.Now,
       ReferrerId = referrerId,
       AffiliatePct = 0.15,
       Cycles = 3,
       ReferrerURL = Request.UrlReferrer.AbsoluteUri
    };
}

1 个答案:

答案 0 :(得分:2)

引荐来源网址是用户浏览到另一个页面时浏览器发送的标头,因此目标站点可以知道原始站点-如果配置了浏览器来发送它(隐私设置或插件可能会剥离标头),并且这些站点使用相同的方案(从http传输到https或反之亦然时,不会发送引荐来源)。

但是每次单击都会将引荐来源网址重置为当前页面。因此,如果您的用户像这样流动:

External Site -> Registration Page -> Registration POST Handler

然后在最后一个页面中,引荐来源网址将是您的注册页面,而不是外部站点的地址。

因此,您需要将引荐来源网址保存在注册页面中,然后将其转发到POST操作。您可以在隐藏的表单字段中进行操作,也可以将其存储在会话或cookie中。所有方法都各有利弊。