最近我开始遇到一个问题。我要在一个公司封装好的前端项目中进行开发。但是他的接口请求api在request.js文件中通过baseURL写死的。我只能通过拦截件接口进行强制修改api地址。
我开始在vue.config.js文件中进行拦截。之后走代理。但是拦截不到。
通过大量问AI。终于找到了个方法:
在main.j写如下::
window.__gconf.AppServerAddress------是原先的api地址
window.__gconf.FormAddress------是改成想要的api地址
(function() {
// 拦截 fetch
const originalFetch = window.fetch;
const urlStr = window.__gconf.AppServerAddress + '/runtime/form';
console.log('🔀 全局拦截器已启动,拦截 URL:', urlStr);
window.fetch = function(url, options) {
if (typeof url === 'string' && url.includes(urlStr)) {
url = url.replace(window.__gconf.AppServerAddress, window.__gconf.FormAddress);
console.log('🔀 Fetch 重写:', url);
}
return originalFetch.call(this, url, options);
};
// 拦截 XMLHttpRequest
const originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url, ...args) {
if (typeof url === 'string' && url.includes(urlStr)) {
url = url.replace(window.__gconf.AppServerAddress, window.__gconf.FormAddress);
console.log('🔀 XHR 重写:', url);
}
return originalOpen.call(this, method, url, ...args);
};
console.log('✅ 全局拦截器已启动');
})();