node.js - koa框架中引入koa-chche-control插件响应头不起作用

浏览:25日期:2022-10-07

问题描述

var send = require(’koa-send’);var Koa = require(’koa’);var app = new Koa();var Router = require(’koa-router’);var cors = require(’koa-cors’);var koaBody = require(’koa-body’)();var cacheControl = require(’koa-cache-control’);var router = new Router({ prefix: ’/public’});app.use(gzip());app.use(cors()) .use(router.routes()) .use(router.allowedMethods()); **app.use(cacheControl({ maxAge: 500}));**router.get(’/:fname/:cname’, koaBody, function*() { var fname = this.params.fname; var cname = this.params.cname; console.log('文件类型' + fname); console.log('文件名' + cname); yield send(this, './public/' + fname + '/' + cname);})var port = 8003;app.listen(port);console.log(` 启动成功,端口: ${port}`);

FireBug返回如下返回头,maxAge=0;ccess-Control-Allow-Methods →GET,HEAD,PUT,POST,DELETEAccess-Control-Allow-Origin →*Cache-Control →max-age=0Connection →keep-aliveContent-Type →image/jpegDate →Thu, 22 Sep 2016 08:02:04 GMTLast-Modified →Wed, 14 Sep 2016 07:42:52 GMTTransfer-Encoding →chunkedcontent-encoding →gzip不知道为何设置了max-age到测试时还是没有显示出来、附上插件地址https://github.com/DaMouse404...,小白请指教

问题解答

回答1:

因为你中间件的位置位置放到路由的后面了,根本就没到cache-control。 放到前面就好了,修改如下

var send = require(’koa-send’);var Koa = require(’koa’);var app = new Koa();var Router = require(’koa-router’);var cors = require(’koa-cors’);var koaBody = require(’koa-body’)();var cacheControl = require(’koa-cache-control’);var router = new Router({ prefix: ’/public’});app.use(gzip());// put the middleware before your routersapp.use(cacheControl({ maxAge: 500}));app.use(cors()) .use(router.routes()) .use(router.allowedMethods());router.get(’/:fname/:cname’, koaBody, function*() { var fname = this.params.fname; var cname = this.params.cname; console.log('文件类型' + fname); console.log('文件名' + cname); yield send(this, './public/' + fname + '/' + cname);})var port = 8003;app.listen(port);console.log(` 启动成功,端口: ${port}`);

相关文章: