333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
   【自定义允许跨域】:Access-Control-Allow-Origin
 */
"use strict";
 
module.exports = options => {
  const { whiteList } = options;
  /**
   * 如果传入的不是数组,直接抛出错误
   *  */
  if (!Array.isArray(whiteList)) {
    throw Error("---------跨域白名单必须设置为数组----------");
  }
 
  return async function setOrigin(ctx, next) {
    if (ctx.request.method === "GET" || ctx.request.method === "OPTIONS") {
      ctx.response.set("Access-Control-Allow-Methods", "*");
      ctx.response.set(
        "Access-Control-Allow-Headers",
        "*,accesstoken,content-type,guid,nonce,signature,timestamp"
      );
      ctx.response.set("Access-Control-Expose-Headers", "*");
      ctx.response.status = 200;
    }
 
    // 当前访问的域名
    const { origin } = ctx.request.header;
    // 如果设置成 '*',就给访问的域名设置允许跨域
    if (whiteList.indexOf("*") > -1) {
      ctx.response.set("Access-Control-Allow-Origin", origin);
    } else if (whiteList.indexOf(origin) > -1) {
      ctx.response.set("Access-Control-Allow-Origin", origin);
    }
    await next();
  };
};