Gmail中拦截发送邮件AJAX请求

发布于 2024-11-18 08:06:09 字数 317 浏览 0 评论 0原文

我正在尝试将回调附加到 Gmail 中的“发送邮件”ajax 操作。我已经能够根据请求负载区分发送邮件操作和其他 AJAX 操作,但无法连接到实际的 AJAX 调用。

到目前为止,我已经尝试使用重写 XMLHttpRequest.open() 方法,详细信息 在这里。那没有用。我还尝试过重写 XMLHttpRequest.send()。也失败了。

有什么想法吗?非常感谢。

I'm trying to attach a callback to the "Send mail" ajax action in Gmail. I've been able to differentiate a Send mail action from other AJAX actions based on the request payload but have been unable to hook into the actual AJAX call.

Thus far, I've tried using overriding the XMLHttpRequest.open() method as detailed here. That hasn't worked. I've also tried overriding XMLHttpRequest.send(). Also failed.

Any thoughts? Much thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一杯敬自由 2024-11-25 08:06:09

Google 的技巧是,他们从具有自己的 JavaScript 环境的 iframe 内部发送请求。但是,由于它是从与父级相同的源加载的,因此您仍然可以轻松地从浏览器控制台操作它:

[].slice.apply(document.querySelectorAll('iframe')).forEach(function (iframe) {
    try {
        var xhrProto = iframe.contentWindow.XMLHttpRequest.prototype;
        var origOpen = xhrProto.open;
        xhrProto.open = function () {
            console.log('DO SOMETHING', arguments);
            return origOpen.apply(this, arguments);
        };
    } catch (e) {}
});

您可能希望使用 MutationObserver 来可靠地检测新添加的 iframe。

Google's trick is that they send the request from inside an iframe which has it's own JavaScript environment. However, since it is loaded from the same origin as the parent, you can still easily manipulate it even from the browser console:

[].slice.apply(document.querySelectorAll('iframe')).forEach(function (iframe) {
    try {
        var xhrProto = iframe.contentWindow.XMLHttpRequest.prototype;
        var origOpen = xhrProto.open;
        xhrProto.open = function () {
            console.log('DO SOMETHING', arguments);
            return origOpen.apply(this, arguments);
        };
    } catch (e) {}
});

You might want to use a MutationObserver to detect newly added iframes reliably.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文