4
Cors

yutent edited this page 2023-11-02 17:05:48 +08:00

跨域中间件

框架内置跨域中间件, 支持一键启用, 便可轻松实现跨域访问。

注意: 这里的跨域配置, 只针对常规浏览器的跨域处理。并不能阻止其他方式的请求。

{
  cors: {
    enabled: false,
    credentials: false,  // 如果要支持cookie,需要设为 true
    origin: [], // 默认不限制, 需要时可配置多个域名 ['abc.com', 'a.foo.com']
    maxAge: 14400
  }
}

默认配置中可以看出, 我们想要开启跨域支持, 最简单的做法, 只需要把里面的enabled的值设为true即可。

即, 在入口文件中, 加入以下代码即可开启:

app.set({ cors: { enabled: true } })

有时, 我们并不想这么简单粗暴的开启跨域支持, 需要对来源进行一些基础的校验, 如域名, 这时候就可以在origin字段中配置了, 配置应为一个数组, 允许同时配置多个可信域名。

注意: 这里的域名配置中, 根域名和二级域名、三级域名等, 可认为是同一域名, 只需要填写根域名即可。

app.set({ 
  cors: { 
    enabled: true,
    origin: ['aaa.com', 'bbb.com'] 
  } 
})   // 这里不需要再写 'foo.aaa.com' 等二级域名、三级域名了。

如果需要支持cookie, 还需要开启 credentials。

app.set({ cors: { enabled: true, credentials: true } })

另外还有一个 maxAge 缓存时长字段, 根据需要自行设置即可。