gpt4 book ai didi

gruntjs - 如何允许 grunt-contrib-connect 允许对静态文件使用 POST、PUT、DELETE 方法?

转载 作者:行者123 更新时间:2023-12-03 23:27:50 27 4
gpt4 key购买 nike

我有一个静态项目,我正在访问虚拟种子 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],你可以扩展它。

重要的是使用:中间件。 unshift ,不推

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;
},
}
}
}

关于gruntjs - 如何允许 grunt-contrib-connect 允许对静态文件使用 POST、PUT、DELETE 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771212/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com