将一个网站发出的所有 JSON 请求重定向到另一个 URL

Redirecting all JSON requests made by a website to another URL

我有这个在 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 异步函数。