当前位置 : 主页 > 网页制作 > Nodejs >

gruntjs – 如何允许grunt-contrib-connect在静态文件上允许POST,PUT,DELETE方法?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有一个静态项目,我正在尝试虚拟种子 JSON文件,但它只允许我通过GET访问它们.这是我的grunt配置文件,有谁知道我将如何允许POST? module.exports = function(grunt) { // Configure grunt.config.set('co
我有一个静态项目,我正在尝试虚拟种子 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],你可以扩展它.

重要的是使用:middlewares.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;
      },
    }
  }
}
网友评论