Minha tarefa
Zombar de algumas respostas de API com grunt-contrib-connect e algumas funções de middleware customizadas .
Meu problema
405 Method not allowed
respostas para solicitações POST
Vamos começar a festa.
Primeira abordagem ingênua (pesquisa stackoverflow, c & p):
- adicione uma função que define todos os cabeçalhos HTTP necessários
var enableREST = function(req, res, next){
res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
res.setHeader('Access-Control-Allow-Credentials', true);
res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
res.setHeader('Access-Control-Allow-Headers', req.headers['access-control-request-headers']);
return next();
};
- adicione essa função a middlewares grunt-contrib-connect
connect: {
server: {
options: {
middleware: function(connect, options, middlewares) {
middlewares.push(enableREST);
}
}
}
}
Não saiu tão bem. Mesmo várias outras combinações de cabeçalho não funcionaram. Ainda a mesma resposta: 405 Method not allowed
.
Minha Solução
Depois de um tempo e algumas revisões de código, encontrei este ‘ pequeno retorno; trap ’em expressjs / serve-index contornando meu middleware personalizado.
Tudo que eu tive que fazer foi enfileirar-se enableREST()
na frente serveIndex()
, unshifting em vez de empurrá-lo para a matriz de middlewares:
connect: {
server: {
options: {
middleware: function(connect, options, middlewares) {
middlewares.unshift(enableREST);
}
}
}
}
Resposta: 200 OK