gpt4 book ai didi

javascript - 是否可以重试我拦截的 XMLHttpRequest?

转载 作者:行者123 更新时间:2023-12-03 04:48:19 33 4
gpt4 key购买 nike

我正在覆盖 XMLHttpRequest.prototype.send = function(a,b) { }XMLHttpRequest.prototype.open = function(a,b) { }这样我就可以拦截从每个 ajax 调用中得到的每个响应。有时,其中一些请求会失败,当发生这种情况时,我需要更新 DOM 的 cookie 并重试失败的原始 XHR。

考虑到我无法控制这些 XHR,这意味着我不创建它们或执行它们,我是否可以使用新更新的 Cookie 重试这些 XHR?

现在,我将原始 XHR 保存在一个新变量中,当它失败时,我会执行 xhr.open.apply()然后xhr.send.apply() 。使用像 Charles 这样的 HTTP Web 代理,我能够检查我的响应,并且总是收到错误消息:无效的请求...我还意识到原始 XHR 和重试的 XHR 之间的区别在于 X-Request-With header 是总是失踪。

关于如何解决这个问题有什么想法吗?

最佳答案

嗯,这是可能的,而且我成功做到了。

我创建了一个函数来重试原始请求,在其中传递与传递给 XMLHTTPRequest.prototype.send 函数相同的参数,该函数在发送之前拦截 XMLHTTPRequest。

function retryOriginalRequest(a,b, args) {
var originalRequest = new XMLHttpRequest();
originalRequest.open(a,b, true);
// The request headers need to be set up after the open call and before the send.
originalRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
originalRequest.send(args, null);
};

关于javascript - 是否可以重试我拦截的 XMLHttpRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774167/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com