代码之家  ›  专栏  ›  技术社区  ›  User987

获取用于用户注册的源站/参照者的URL

  •  -1
  • User987  · 技术社区  · 7 年前

    我有一段代码,我测试了一个简单的用户注册码:

       ReferrerURL = Request.UrlReferrer.AbsoluteUri
    

    例如,如果用户通过某个广告点击了这个站点,我想得到他来自的源站点。

    通过这段代码,我只得到了我自己网站的URL,它看起来像:

    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 回复  |  直到 7 年前
        1
  •  2
  •   CodeCaster    7 年前

    referer是当用户导航到另一个页面时,浏览器发送的头,因此目标站点知道源站点-如果浏览器配置为发送它(隐私设置或插件可能会删除头),如果站点使用相同的方案(从http传输到https时不发送referer,反之亦然)。

    但每次点击都会将引用者重置为当前页面。所以如果你的用户流是这样的:

    External Site -> Registration Page -> Registration POST Handler
    

    所以你需要在注册页面保存推荐人,并将其转发给你的POST操作。您可以在隐藏的表单字段中执行此操作,也可以将其存储在会话或cookie中。所有的方法都有其优缺点。