我有一段经过测试的简单用户注册代码:
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
};
}
答案 0 :(得分:2)
引荐来源网址是用户浏览到另一个页面时浏览器发送的标头,因此目标站点可以知道原始站点-如果配置了浏览器来发送它(隐私设置或插件可能会剥离标头),并且这些站点使用相同的方案(从http传输到https或反之亦然时,不会发送引荐来源)。
但是每次单击都会将引荐来源网址重置为当前页面。因此,如果您的用户像这样流动:
External Site -> Registration Page -> Registration POST Handler
然后在最后一个页面中,引荐来源网址将是您的注册页面,而不是外部站点的地址。
因此,您需要将引荐来源网址保存在注册页面中,然后将其转发到POST操作。您可以在隐藏的表单字段中进行操作,也可以将其存储在会话或cookie中。所有方法都各有利弊。