Browse Source

✨ feat(renderer): 添加XHR请求拦截和重定向功能

- 实现XMLHttpRequest拦截器,拦截指定域名(plant2.hbatg.com)的请求
- 添加URL重定向逻辑,将拦截的请求重定向到当前域
- 添加控制台日志输出,便于调试拦截和重定向过程
- 封装为自执行函数,避免污染全局作用域
yourname 1 month ago
parent
commit
ead6859c99
1 changed files with 29 additions and 0 deletions
  1. 29 0
      src/server/renderer.tsx

+ 29 - 0
src/server/renderer.tsx

@@ -99,6 +99,35 @@ export const Rooter = () => {
         `}} />
         {/* 注入全局配置 */}
         <script dangerouslySetInnerHTML={{ __html: `window.CONFIG = ${JSON.stringify(GLOBAL_CONFIG)};` }} />
+        {/* XHR拦截和重定向功能 */}
+        <script dangerouslySetInnerHTML={{ __html: `
+          // XHR拦截和重定向功能
+          (function() {
+            const originalXHROpen = XMLHttpRequest.prototype.open;
+            const originalXHRSend = XMLHttpRequest.prototype.send;
+
+            // 需要拦截的域名
+            const INTERCEPT_DOMAIN = 'plant2.hbatg.com';
+
+            XMLHttpRequest.prototype.open = function(method, url, ...args) {
+              // 检查URL是否包含需要拦截的域名
+              if (url && url.includes(INTERCEPT_DOMAIN)) {
+                // 将URL重定向到当前域
+                const newUrl = url.replace(new RegExp('https?://[^/]*' + INTERCEPT_DOMAIN), '');
+                console.log('XHR拦截: 将请求从', url, '重定向到', newUrl);
+                return originalXHROpen.call(this, method, newUrl, ...args);
+              }
+
+              return originalXHROpen.call(this, method, url, ...args);
+            };
+
+            XMLHttpRequest.prototype.send = function(...args) {
+              return originalXHRSend.call(this, ...args);
+            };
+
+            console.log('XHR拦截器已启用,将拦截', INTERCEPT_DOMAIN, '的请求并重定向到当前域');
+          })();
+        `}} />
         <script dangerouslySetInnerHTML={{ __html: `
           // 页面加载时将数据写入会话存储
           window.addEventListener('DOMContentLoaded', () => {