我加了一个跨域中间件
middleware/cors.js
module.exports = require('koa-cors');
config.default.js
module.exports = {
// 配置需要的中间件,数组顺序即为中间件的加载顺序
middleware: [ 'cors' ],
};
登录 http://127.0.0.1:7001/user/login?username=3
Error: Please set config.keys first
at Application.get keys [as keys] (D:\lyq5655779.managementsystem\trunk\manage\node_modules\egg\lib\application.js:181:15)
at Object.get cookies [as cookies] (D:\lyq5655779.managementsystem\trunk\manage\node_modules\egg\app\extend\context.js:17:65)
at Object.get [egg-security#CSRF_SECRET] (D:\lyq5655779.managementsystem\trunk\manage\node_modules\egg-security\app\extend\context.js:76:32)
at Object.ensureCsrfSecret (D:\lyq5655779.managementsystem\trunk\manage\node_modules\egg-security\app\extend\context.js:87:13)
at Object.csrf (D:\lyq5655779.managementsystem\trunk\manage\node_modules\egg-security\lib\middlewares\csrf.js:13:10)
at csrf.next (<anonymous>)
at Object.<anonymous> (D:\lyq5655779.managementsystem\trunk\manage\node_modules\koa-compose\index.js:28:19)
at Generator.next (<anonymous>)
at onFulfilled (D:\lyq5655779.managementsystem\trunk\manage\node_modules\co\index.js:65:19)
at D:\lyq5655779.managementsystem\trunk\manage\node_modules\co\index.js:54:5
原因写的很清楚了,在 config.default.js
里面配置下 config.keys 即可
@atian25 我有配了吧
你需要学习下 node 的基础知识…
你这里写了两个 module.exports
,互相覆盖了啊
// config/config.default.js
module.exports = appInfo => {
const config = {};
config.keys = '写一个随机数,不要告诉别人哈';
config.middleware = [ 'cors' ];
return config;
};
@atian25 可以了,谢谢,嗯,基础比较差
不好意思,你的这段代码还是错的。。。。 正确的我贴在上面了。
@dangyanglim 去买本 @朴老师 的「深入浅出 Node.js」 学习下吧。
@atian25 你们是不是做了个 cnodejs 的监控。。。一有 egg 的关键字就提醒你们。。。。。
@rwing 没有啊
@atian25 嗯,我看过一些书,还是理解不深,我觉得多实践才可能好点。
csrf问题解决,但先有了另一个问题egg-security不允许前端用options的方式请求,返回405 Method Not Allowed, 我前端用post的,但是不知道为什么浏览器调试那里显示options
@ngot 感觉egg.security是不是屏蔽options了
这里已经被我屏蔽掉了,还是不行
修改,因为修改的库文件所以重启之后就可以了,貌似就是因为这里把options排除了?
egg-security/lib/middlewares/methdnoallow.js里把options排除了, 但是cors跨域不是一定要用options吗? 我直接改了这句话就可以跨域了如下图。 另外,这样 config.security={ enable:false, } 貌似不可以屏蔽掉egg.security插件
改库文件要重启服务器才能生效,我刚刚没有重启
可以跨域了
解决了,methdnoallow false From Noder
不要改库,有配置的在应用配置中覆盖