Browse Source

ly waf拦截提醒

ly 2 weeks ago
parent
commit
04df027d83
1 changed files with 32 additions and 0 deletions
  1. 32 0
      ui/src/utils/request.js

+ 32 - 0
ui/src/utils/request.js

@@ -28,8 +28,28 @@ service.interceptors.request.use(config => {
     Promise.reject(error)
 })
 
+// 检测是否为WAF拦截响应
+function checkWafBlock(data) {
+  if (typeof data === 'string' && data.includes('Request Rejected') && data.includes('support ID')) {
+    const match = data.match(/Your support ID is:\s*(\d+)/);
+    const supportId = match ? match[1] : '未知';
+    return { blocked: true, supportId };
+  }
+  return { blocked: false };
+}
+
 // 响应拦截器
 service.interceptors.response.use(res => {
+    // 检测WAF拦截
+    const wafResult = checkWafBlock(res.data);
+    if (wafResult.blocked) {
+      Message({
+        message: `请求被安全策略拦截,Support ID: ${wafResult.supportId}`,
+        type: 'error',
+        duration: 10 * 1000
+      });
+      return Promise.reject(new Error(`WAF拦截,Support ID: ${wafResult.supportId}`));
+    }
     // 未设置状态码则默认成功状态
     const code = res.data.code || 200;
     // 获取错误信息
@@ -63,6 +83,18 @@ service.interceptors.response.use(res => {
   },
   error => {
     console.log('err' + error)
+    // 检测WAF拦截(错误响应中)
+    if (error.response && error.response.data) {
+      const wafResult = checkWafBlock(error.response.data);
+      if (wafResult.blocked) {
+        Message({
+          message: `请求被安全策略拦截,Support ID: ${wafResult.supportId}`,
+          type: 'error',
+          duration: 10 * 1000
+        });
+        return Promise.reject(new Error(`WAF拦截,Support ID: ${wafResult.supportId}`));
+      }
+    }
     let { message } = error;
     if (message == "Network Error") {
       message = "后端接口连接异常";