问题

在使用gulp过程中,遇到了在使用 gulp-connect 启动服务的时候,发送 ajax 请求不能发送 post,返回错误:

1
405 Method Not Allowed

解决

通过自定义一个中间件来完成POSTPUTDELETE 请求。
首先,引入fspathconnect

1
2
3
var fs = require('fs'),
path = require('path'),
connect = require('gulp-connect');

接着,在配置中增加自己的中间件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
gulp.task('server', function() {
connect.server({
middleware: function(connect, options) {
return [
function(req, res, next) {
var filepath = path.join(options.root, req.url);
if (
'POSTPUTDELETE'.indexOf(req.method.toUpperCase()) > -1 &&
fs.existsSync(filepath) &&
fs.statSync(filepath).isFile()
) {
return res.end(fs.readFileSync(filepath));
}
return next();
}
];
},
hostname: '127.0.0.1',
port: 8090,
livereload: true
});
});

References

让 Gulp Connect 支持 POST、PUT、DELETE 请求