在express或者nestjs中使用cors库进行跨域设置

 

1. 示例 - 仅允许example.com的域名跨域:

// *注意: origin不支持 'http://*.example.com' 这种配置, 多个必须得写正则或者传数组进去 具体规则看下边说明

app.use(cors({
  origin: /.*.example.com/
}))

2. 具体配置说明-官网

  • origin:配置Access-Control-Allow-Origin CORS标头。可能的值:
  • Boolean-设置origintrue反映请求的来源(由定义)req.header('Origin'),或设置false为禁用CORS。
  • String-设置origin为特定来源。例如,如果将其设置为"http://example.com"仅允许来自“ http://example.com ”的请求。
  • RegExp-设置origin为正则表达式模式,该模式将用于测试请求的来源。如果匹配,则将反映请求的来源。例如,该模式/example\.com$/将反映来自以“ example.com”结尾的来源的任何请求。
  • Array-设置origin为有效来源数组。每个原点可以是StringRegExp。例如,["http://example1.com", /\.example2\.com$/]将接受来自“ http://example1.com ”或来自“ example2.com”子域的任何请求。
  • Function-设置origin为实现某些自定义逻辑的函数。该函数将请求源作为第一个参数,并将回调(称为callback(err, origin),其中originorigin选项的非函数值)作为第二个参数。
  • methods:配置Access-Control-Allow-Methods CORS标头。期望以逗号分隔的字符串(例如:'GET,PUT,POST')或数组(例如:)['GET', 'PUT', 'POST']
  • allowedHeaders:配置Access-Control-Allow-Headers CORS标头。期望以逗号分隔的字符串(例如:“ Content-Type,Authorization”)或数组(例如:)['Content-Type', 'Authorization']。如果未指定,则默认为反映在请求的Access-Control-Request-Headers标头中指定的标头。
  • exposedHeaders:配置Access-Control-Expose-Headers CORS标头。需要以逗号分隔的字符串(例如:“ Content-Range,X-Content-Range”)或数组(例如:)['Content-Range', 'X-Content-Range']。如果未指定,则不会公开任何自定义标头。
  • credentials:配置Access-Control-Allow-Credentials CORS标头。设置为true传递标题,否则将省略。
  • maxAge:配置Access-Control-Max-Age CORS标头。设置为整数以传递标头,否则将省略。
  • preflightContinue:将CORS飞行前响应传递给下一个处理程序。
  • optionsSuccessStatus:提供状态代码以用于成功OPTIONS请求,因为某些旧版浏览器(IE11,各种SmartTV)会阻塞204