我有一个静态项目,但我要打的是虚拟种子JSON文件,但是它仅允许我通过GET访问它们。这是我的grunt配置文件,有人知道我将如何允许POST吗?
module.exports = function(grunt) {
// Configure
grunt.config.set('connect', {
server: {
options: {
hostname: '*',
middleware: function(connect) {
return [
function(request, response, next) {
response.setHeader('Access-Control-Allow-Origin', '*');
response.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
response.setHeader('Access-Control-Allow-Headers', 'Content-Type');
return next();
},
connect.static(require('path').resolve('.'))
];
}
}
}
});
// Load Task
grunt.loadNpmTasks('grunt-contrib-connect');
};
这是我的解决方案,希望对您有所帮助,我只检查base [0],就可以扩展它。
重要的是使用:中间件。不印字,不推
connect: {
dev: {
options: {
// 经过测试 connect插件会依照base的定义顺序检索文件
// 这意味着如果存在相同文件,定义在前面的会优先返回
base: ['app', '.'],
port: 8888,
// open: true,
livereload: true,
hostname: 'localhost',
middleware: function (connect, options, middlewares) {
var fs = require('fs');
var path = require('path');
var support = ['POST', 'PUT', 'DELETE'];
middlewares.unshift(function (req, res, next) {
// 单独处理POST请求 请求的地址必须是文件 这里没有进行rewrite处理
if (support.indexOf(req.method.toUpperCase()) != -1) {
var filepath = path.join(options.base[0], req.url);
if (fs.existsSync(filepath) && fs.statSync(filepath).isFile()) {
return res.end(fs.readFileSync(filepath));
}
}
return next();
});
return middlewares;
},
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句