whistle.mock-plugins 1.0.6-beta.0 → 1.0.6-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ruleManager.js +14 -0
- package/lib/server.js +28 -0
- package/package.json +1 -1
package/lib/ruleManager.js
CHANGED
|
@@ -231,6 +231,20 @@ const ruleManager = {
|
|
|
231
231
|
// 只记录关键信息
|
|
232
232
|
this.log(`[规则处理器] 处理请求,接口: ${interfaceObj.name}, 代理类型: ${proxyType}`);
|
|
233
233
|
|
|
234
|
+
// 添加CORS支持 - 设置跨域相关的响应头
|
|
235
|
+
res.setHeader('Access-Control-Allow-Origin', req.headers.origin || '*');
|
|
236
|
+
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS, PATCH');
|
|
237
|
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, Accept');
|
|
238
|
+
res.setHeader('Access-Control-Allow-Credentials', 'true');
|
|
239
|
+
res.setHeader('Access-Control-Max-Age', '86400'); // 24小时
|
|
240
|
+
|
|
241
|
+
// 处理预检请求
|
|
242
|
+
if (req.method === 'OPTIONS') {
|
|
243
|
+
res.statusCode = 204; // No Content
|
|
244
|
+
res.end();
|
|
245
|
+
return { handled: true };
|
|
246
|
+
}
|
|
247
|
+
|
|
234
248
|
// 设置响应头
|
|
235
249
|
let headers = config.headers;
|
|
236
250
|
if (typeof headers === 'string') {
|
package/lib/server.js
CHANGED
|
@@ -410,6 +410,20 @@ const handleLegacyRequest = (req, res, next) => {
|
|
|
410
410
|
const https = require('https');
|
|
411
411
|
const { Readable } = require('stream');
|
|
412
412
|
|
|
413
|
+
// 添加CORS支持 - 设置跨域相关的响应头
|
|
414
|
+
res.setHeader('Access-Control-Allow-Origin', req.headers.origin || '*');
|
|
415
|
+
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS, PATCH');
|
|
416
|
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, Accept');
|
|
417
|
+
res.setHeader('Access-Control-Allow-Credentials', 'true');
|
|
418
|
+
res.setHeader('Access-Control-Max-Age', '86400'); // 24小时
|
|
419
|
+
|
|
420
|
+
// 处理预检请求
|
|
421
|
+
if (req.method === 'OPTIONS') {
|
|
422
|
+
res.statusCode = 204; // No Content
|
|
423
|
+
res.end();
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
|
|
413
427
|
// 获取原始完整URL的所有可能来源
|
|
414
428
|
let originalUrl = null;
|
|
415
429
|
|
|
@@ -505,6 +519,20 @@ const handleLegacyRequest = (req, res, next) => {
|
|
|
505
519
|
res.setHeader(key, proxyRes.headers[key]);
|
|
506
520
|
});
|
|
507
521
|
|
|
522
|
+
// 确保设置CORS头,即使原始响应没有
|
|
523
|
+
if (!res.getHeader('Access-Control-Allow-Origin')) {
|
|
524
|
+
res.setHeader('Access-Control-Allow-Origin', req.headers.origin || '*');
|
|
525
|
+
}
|
|
526
|
+
if (!res.getHeader('Access-Control-Allow-Methods')) {
|
|
527
|
+
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS, PATCH');
|
|
528
|
+
}
|
|
529
|
+
if (!res.getHeader('Access-Control-Allow-Headers')) {
|
|
530
|
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, Accept');
|
|
531
|
+
}
|
|
532
|
+
if (!res.getHeader('Access-Control-Allow-Credentials')) {
|
|
533
|
+
res.setHeader('Access-Control-Allow-Credentials', 'true');
|
|
534
|
+
}
|
|
535
|
+
|
|
508
536
|
// 设置状态码
|
|
509
537
|
res.statusCode = proxyRes.statusCode;
|
|
510
538
|
|