在express或者nestjs中使用cors库进行跨域设置
1. 示例 - 仅允许example.com的域名跨域:
// *注意: origin不支持 'http://*.example.com' 这种配置, 多个必须得写正则或者传数组进去 具体规则看下边说明
app.use(cors({
origin: /.*.example.com/
}))
2. 具体配置说明-官网
origin
:配置Access-Control-Allow-Origin CORS标头。可能的值:
-
Boolean
-设置origin
为true
反映请求的来源(由定义)req.header('Origin')
,或设置false
为禁用CORS。 -
String
-设置origin
为特定来源。例如,如果将其设置为"http://example.com"
仅允许来自“ http://example.com ”的请求。 -
RegExp
-设置origin
为正则表达式模式,该模式将用于测试请求的来源。如果匹配,则将反映请求的来源。例如,该模式/example\.com$/
将反映来自以“ example.com”结尾的来源的任何请求。 -
Array
-设置origin
为有效来源数组。每个原点可以是String
或RegExp
。例如,["http://example1.com", /\.example2\.com$/]
将接受来自“ http://example1.com ”或来自“ example2.com”子域的任何请求。 -
Function
-设置origin
为实现某些自定义逻辑的函数。该函数将请求源作为第一个参数,并将回调(称为callback(err, origin)
,其中origin
是origin
选项的非函数值)作为第二个参数。
-
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
。