CORS
框架内置对 跨源资源共享 的支持,所以无需安装任何依赖包。
在 config/cors.ts
文件中将 enabled
属性设为 true,以开启 CORS 配置。
注:如果没有此配置文件, 则需要手动创建。可以从 CORS stub 获取配置信息。
// title: config/cors.ts
{
"enabled": true
}
配置允许访问的源
你可以配置 origins
属性来允许 CORS 请求。这个属性控制了 Access-Control-Allow-Origin 头。
布尔值
设置origin为 true
会允许任意源的请求。设置为 false
则拒绝所有源的请求。
{
origin: true
}
字符串或包含源的数组
你可以用字符串配置一个允许请求的源,或者用字符串数组配置多个允许请求的源。
{
origin: 'adonisjs.com',
}
// 或
{
origin: ['adonisjs.com']
}
通配符
相当于给 Access-Control-Allow-Origin
设置了一个通配符。
{
origin: '*'
}
函数
你也可以使用一个函数作为 origin
的值,在运行时去判断哪些源被允许、哪些源被拒绝。
此函数接收“当前源”作为唯一的参数,必须返回一个布尔值,一个通配符或者一个包含允许访问源的字符串/字符串数组。
const ALLOWED_ORIGINS = []
{
origin: (requestOrigin: string) => {
return ALLOWED_ORIGINS.includes(requestOrigin)
}
}
允许的请求方式
methods
属性控制在预检请求阶段允许使用的 HTTP 请求方式。header 中的 Access-Control-Request-Method 属性会验证 HTTP 请求方式是否被允许。
{
methods: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE']
}
允许的头
headers
属性控制在预检请求时的头。 Access-Control-Request-Headers 属性会检查请求头。
布尔值
设置为 true
会通过所有的请求头。反之,设置为 false
会拒绝所有的请求头。
{
headers: true
}
字符串或者用数组表示的 headers
你可以使用字符串去配置一个允许的 headers 属性,也可以使用数组配置多个允许的 headers 属性。
{
headers: [
'Content-Type',
'Accept',
'Cookie'
]
}
函数
你可以定义一个函数作为 headers
属性的值以在运行时配置 headers 。
此函数接收当前的 header 值作为唯一的参数,必须返回一个布尔值或者字符串或允许来源的数组。
const ALLOWED_HEADERS = []
{
headers: (requestHeaders: string) => {
return ALLOWED_ORIGINS.includes(requestHeaders)
}
}
暴露头信息
exposeHeaders
属性通过 Access-Control-Expose-Headers 控制在预检请求阶段需要暴露的头信息。
{
exposeHeaders: [
'cache-control',
'content-language',
'content-type',
'expires',
'last-modified',
'pragma',
]
}
允许凭据
credentials
属性控制在预检阶段的 Access-Control-Allow-Credentials 头。
{
credentials: true
}
Max age
maxAge
属性控制响应头的 Access-Control-Max-Age 属性。 值的单位是秒.
- 值为
null
将不会设置到 header 中。 - 此外,值为
-1
时会设置到 header 中,但缓存会关闭。
{
maxAge: 90
}
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。