【问题标题】:How to redirect to external URL and collect client data in Meteor如何重定向到外部 URL 并在 Meteor 中收集客户端数据
【发布时间】:2015-08-19 10:40:04
【问题描述】:

我的目标是创建一个链接,该链接重定向到外部 URL 并跟踪操作系统、浏览器等客户端数据。

为了实现这一点,我创建了两条单独的路线。一个客户端路由,重定向到跟踪客户端数据并重定向到服务器路由的模板。

这是我的路线:

Router.route('/:_id', {name: 'url', controller: 'UrlController'});
Router.route('/redirect/:_id', {name: 'urlRedirect', where: 'server'}).get(function () {
    var url = Urls.findOne(this.params._id);
    if (url) {
        this.response.writeHead(302, {
            'Location': url.url
        });
        this.response.end();
    } else {
        this.redirect('/');
    }
});
UrlController = RouteController.extend({
    action: function () {
        this.render('redirect');
    },
    data: function () {
        return Urls.findOne(this.params._id);
    }
});

这是模板:

Template.redirect.onRendered(function () {
    var client = new ClientJS(); // Create A New Client Object
    var userAgent = client.getUserAgent(); // Get User Agent String
    console.log(userAgent);
    Router.go('urlRedirect', {_id: this.data._id});
});

现在我的问题是,是否可以从服务器路由收集客户端数据(我是否需要从:_id/redirect/:_id 的内部重定向)?

如果用户被重定向并点击浏览器的“返回”按钮,他将看到空的redirect 模板。我该如何解决这个问题?

【问题讨论】:

    标签: javascript redirect meteor


    【解决方案1】:

    您可以从路由中的 nodejs request 对象获取标头信息。比如如何获取user-agent字符串:

    Router.route('/asd', {where: 'server'}).get(function () {
        var request = this.request;
        var response = this.response;
        var headers = request.headers;
        var userAgent = headers["user-agent"];
        console.log(userAgent);
        response.end();
    });
    

    【讨论】:

    • 感谢您的帮助。如果我想将详细信息保存在我的数据库中,这是一个好方法吗?我应该如何处理字符串user-agent,我需要解析这个吗?我想保存浏览器、浏览器版本、移动设备等内容。
    • 是的,你需要解析它,它应该提供关于浏览器、版本、移动设备等的足够信息(只要用户没有伪造他们的user-agent)。有一堆包可以为你处理解析。 github.com/awwx/meteor-useragent 是最早出现在 Google 上的网站之一。
    猜你喜欢
    • 2015-06-03
    • 2021-12-28
    • 2015-10-12
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2016-09-09
    相关资源
    最近更新 更多