301重定向到第三方,导致Ajax请求进行重复通话

时间:2018-08-03 11:31:27

标签: javascript ajax http-status-code-301 event-tracking

有很多类似的问题,但我认为我对此有新的看法。

我正试图通过ajax调用第三方网址以进行跟踪,因此我并不在乎响应。只是它已发送。

跟踪网站已为我们提供了一个网址,他们希望用户单击该网址,然后301重定向到我们的产品页面。我们希望显示一个模式窗口而不是重定向到产品页面,例如快速查看按钮。

问题在于浏览器向原始网址发送了两个请求,这将使我们的统计数据产生偏差。 查看chrome中的网络面板,我可以看到其中之一来自jQuery的ajax函数,并且具有与之关联的调用堆栈。第二个请求似乎来自“点击”事件。

如果我从该功能中删除了ajax请求,则不会发送任何请求。

我创建了一个模拟服务器以进行进一步测试。当它返回200时,仅发送了一个请求。当我将其更改为301时,发送了两个请求。 奇怪的是,两个请求都针对原始URL。甚至没有尝试遵循重定向。

我有些困惑,希望有人可以给我一些下一步的指导。

这是调用$ .ajax的函数:

function externalRequest(settings) {
    return new Promise((resolve, reject) => {
        $.ajax(settings)
            .done((data, textStatus, jqXHR) => {
                const { status, statusText } = jqXHR;

                resolve({
                    data,
                    status,
                    statusText,
                });
            })
            .fail(reject);
    });
}

通用第三方标记功能:

function thirdPartyTracking(url) {
    Ajax.externalRequest({
        method: 'GET',
        url,
    }).catch((error) => {
        console.error('Error sending tracking tag: ', url, error);
    });
}

这叫做:

thirdPartyTracking('https://tracking.com/click?sku=123&uid=abc456')

网络面板上的结果:

requests in the network panel

谢谢

0 个答案:

没有答案