koa2跨域请求cors官方MD笔记

自己平时学习笔记,有不对的地方希望大家指出完善

@koa/cors

NPM version
npm的要求版本
build status
支持build
Test coverage

David deps

npm download

Cross-Origin Resource Sharing(CORS) for koa

Installation(安装)

$ npm install @koa/cors@2 --save

Quick start

Enable cors with default options:(默认参数)

  • origin: request Origin header (支持所有的跨域)

  • allowMethods: GET,HEAD,PUT,POST,DELETE,PATCH (支持所有的请求方式)

cors(options)支持选项

  CORS middleware

  @param {Object} [options]
     {String|Function(ctx)} origin `Access-Control-Allow-Origin`, default is request Origin header
     {String|Array} allowMethods `Access-Control-Allow-Methods`, default is 'GET, HEAD,PUT,POST,DELETE,PATCH'
     {String|Array} exposeHeaders `Access-Control-Expose-Headers`
     {String|Array} allowHeaders `Access-Control-Allow-Headers`
     {String|Number} maxAge `Access-Control-Max-Age` in seconds
     {Boolean} credentials `Access-Control-Allow-Credentials`
     {Boolean} keepHeadersOnError Add set headers to `err.header` if an error is thrown
     
  @return {Function} cors middleware
  @api public

Hello word

const Koa = require('koa');
const cors = require('@koa/cors');

const app = new Koa();

app.use(cors({

   // 该选项是一个函数,设置域名访问权限,函数的返回值即是允许访问的域名,对应浏览器Network响应头的Access-Control-Allow-Origin,
    origin: function (ctx) {
        if (ctx.url === '/test') {
            return "*"; // 允许来自所有域名请求
        }
        return 'http://localhost:8080'; / /只允许 http://localhost:8080 这个域名的请求
    },
    
    // 设置所允许的HTTP请求方法
    allowMethods: ['GET', 'POST', 'DELETE'],
    
   /*
    CORS请求时,XMLHttpRequest对象的getResponseHeader()方法只能拿到6个基本字段:
        Cache-Control、
        Content-Language、
        Content-Type、
        Expires、
        Last-Modified、
        Pragma。
    */
    // 需要获取其他字段时,使用Access-Control-Expose-Headers,
    // getResponseHeader('myData')可以返回我们所需的值
    exposeHeaders: ['Token', 'Server-Authorization'],

    // 表明服务器支持的所有头信息字段
    allowHeaders: ['Content-Type', 'Authorization', 'Accept','Token'],
    
    // 该字段可选,用来指定本次预检请求的有效期,单位为秒。
    // 当请求方法是PUT或DELETE等特殊方法或者Content-Type字段的类型是application/json时,服务器会提前发送一次请求进行验证
    // 下面的的设置只本次验证的有效时间,即在该时间段内服务端可以不用进行验证
    maxAge: 5,
    
    // 该字段可选。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。
    // 当设置成允许请求携带cookie时,需要保证"Access-Control-Allow-Origin"是服务器有的域名,而不能是"*";
    credentials: true,

}))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值