egg 如何配置 cors(全网少数配完可行的文档)

1,102 阅读1分钟

首发于 语雀文档@blueju

前言:

我查阅了不少文档,配置的方法都是有错误的,甚至官方文档都是错的,年久失修的状态。

步骤:

  1. 安装 egg-cors
npm i egg-cors --save
  1. 启用 egg 插件 egg-cors

\config\plugin.js

module.exports = {
	cors: {
    enable: true,
    package: 'egg-cors',
  },
}

此处官方文档中写的是:(是错的或者已过时无效的,反正我试了无效,况且现在都用 ES6 里哪还有 exports.cors 这种写法,具体区别可参考此文档:www.cnblogs.com/fayin/p/683…

// {app_root}/config/plugin.js
exports.cors = {
  enable: true,
  package: 'egg-cors',
};
  1. 配置 cors

\config\config.default.js

config.security = {
  // 放开所有域名
	domainWhiteList: ['*'],
};

此处官方文档中写的是:(也是错的或者已过时无效的,反正我试了无效)

exports.security = {
  domainWhiteList: [ 'http://localhost:4200' ],
};

注意

有不少文档中还说要配这些:

config.cors = {
  origin: '*',
  allowMethods: 'GET, HEAD, PUT, POST, DELETE, PATCH',
  credentials: true,
};

其实也是不对的,官方文档虽然有些内容是过时的,但是整体思想应该还是没变的,看官方文档中的这句话:
image.png
翻译过来就是:
如果设置了,则插件将跟随它来设置并忽略 .否则,默认的将如上所述生效。

因此我认为它并不是必需的,而是补充性的。

详见此次 commit 提交:

github.com/blueju/umi-…