将一个网站发出的所有 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
异步函数。
我有这个在 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
异步函数。