2016-11-25 8 views
0

Я бег моего приложения с хрюкать задачи бегун, он бросает мне следующую ошибку:Получение POST Ошибки HTTP: // локальный: 8080/окурка/К/myalerts2.json 405 (Method Not Allowed)

POST http://localhost:8080/stub/cms/myalerts2.json 405 (Method Not Allowed)

Я попытался следующие вещи в моем Gruntfile.js

connect: { 
       server: { 
        options: { 
         keepalive: true, 
         port: 8001, 
         protocol: 'http', 
         hostname: '*', 
         base: 'dis', 
         directory: 'dis', 
         open: { 
          target: 'http://localhost:8001/mydemo.html', 
          appname: 'open' 
         }, 

         middleware: function(connect, options, middlewares) { 
        middlewares.unshift(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,POST,DELETE'); 
          res.setHeader('Access-Control-Allow-Headers', req.headers['access-control-request-headers']); 
         }); 
         return middlewares; 
       } 
} 
     } 
    }, 

Все еще его не позволяет мне работать. Любая помощь или предложение я буду рад приветствовать. Заранее спасибо

+0

это опечатка, или вы использовали порт '8080' в URI и порт' 9001' в коде? – Claies

+0

ok после вашего редактирования теперь у вас есть * три * разных порта, '8080',' 8001' и '9001'. – Claies

+0

Извините @claies его работает только на 8001 – user1989488

ответ

0

После пары раздражающих дней, наконец, мой код работает для меня. Посмотрите на мой код ниже: -

connect: { 
      server: { 
       options: { 
        keepalive: true, 
        port: 8001, 
        protocol: 'http', 
        hostname: '*', 
        directory: 'dist', 
        open: { 
         target: 'http://localhost:8001/myDemo.html', 

        }, 
         middleware: function(connect, options, middlewares) { 

           middlewares.unshift(function(req, res, next) { 
            res.setHeader('Access-Control-Allow-Credentials', true); 
            res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
            res.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
            **if (req.method.toUpperCase() == 'POST') req.method='GET';** 
            return next(); 
           }); 

           return middlewares; 
         } 

       } 
      } 
     }, 

увидеть звезду отмеченной линии т.е. if (req.method.toUpperCase() == 'POST') req.method='GET'; я сделал этот трюк, и его работал для меня. Эта статья также помогает мне https://github.com/gruntjs/grunt-contrib-connect#middleware

0

До сих пор я пробовал следующее обновление для моего кода, я могу избавиться от ошибки Method not Allowed 405, но в настоящее время я получаю «Не удалось загрузить ресурс: сервер ответил статусом 404 (Не найдено)» я модифицировал мой код, как показано ниже: -

connect: { 
      server: { 
       options: { 
        keepalive: true, 
        port: 8001, 
        protocol: 'http', 
        hostname: '*', 
        base: 'dist', 
        directory: 'dist', 
        open: { 
         target: 'http://localhost:8001/myDemo.html', 
         appname: 'open' 
        }, 
         middleware: function(connect, options, next) { 
           return [ 
           function(req, res, next) { 
           res.setHeader('Access-Control-Allow-Credentials', true); 
           res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
           res.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
           next(); 
           }]; 
         } 

       } 
      } 
     }, 

Любое предложение будет оценено.