Javascript 将网站发出的所有JSON请求重定向到其他URL

Javascript 将网站发出的所有JSON请求重定向到其他URL,javascript,tampermonkey,Javascript,Tampermonkey,我有一个脚本,我在tampermonkey上使用 const origOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function (...args) { if (typeof args[1] === 'string') args[1] = args[1].replace('example.com/*', 'mywebsite.com/*'); } return

我有一个脚本,我在tampermonkey上使用

const origOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function (...args) {
    if (typeof args[1] === 'string')
        args[1] = args[1].replace('example.com/*', 'mywebsite.com/*');
    }
    return origOpen.apply(this, args);
};
对于特定的文件URL,此脚本可以完全正常工作,但对于重定向URL下的所有路由,则不行。这不是为了完全重定向页面。我想知道如何将
example.com
下发生的每个请求重定向到
mywebsite.com

两个问题 问题1。 大多数请求可能不是通过完整URL发起的。因此,您会收到像
/api/something.json
这样的请求,这些请求不会被替换

您可以使用
URL
对象来处理所有情况

const origOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function (...args) {
    if (typeof args[1] === 'string') {
        // will use example.com as a base if path is relative, ignore it if not
        const newURL = new URL(args[1], "http://www.example.com");
        newURL.host = "mywebsite.xxx";
        args[1] = newURL+"";
    }
    return origOpen.apply(this, args);
};
问题2。
XMLHttpRequest
不是获取AJAX数据的唯一方法。还要考虑以类似的方式替换<代码> FETCH < /代码>异步函数。

是否尝试注销未被替换的请求以查看为什么?几乎可以肯定的是,大多数XHR请求都不是由完整的URL指定的。您自己添加的特定URL完全可以正常工作,但当我尝试重定向该URL下的所有请求时,什么也没有发生。网站继续使用自己的原创内容。你不理解我的问题。我在问您是否尝试对无法替换的URL执行
控制台.log
或调试中断。不过我已经发布了一个答案。我尝试了你发送的示例代码,但它不起作用……如果你愿意一起解决问题的最大努力是“它不起作用”,那么如果你单独解决它可能会更好。另外,听起来你好像错过了我关于
fetch
的第二点,这一点也很重要。对不起,忘了给出错误。它说
Uncaught SyntaxError:Unexpected token'const'
@beneems好的,我修复了,
if
之后缺少一个
{
。如果一些网站使用它,您可能仍然需要编写代码来覆盖
获取
行为。该网站完全处于XHR状态,而不是获取状态。