2016-03-03 5 views
8

Я использую grunt-connect-proxy «^ 0.2.0» для прокси-сервера api из моего приложения angularjs. Проект был запущен с помощью yoman углового генератора.Grund Connect Proxy: 404 Not Found

Я следовал инструкциям here, но при использовании прокси-сервера, я получаю:

Failed to load resource: the server responded with a status of 404 (Not Found) 
http://localhost:9000/api/users 

My Proxy Configuration:

connect: { 
    options: { 
    port: 9000, 
    // Change this to '0.0.0.0' to access the server from outside. 
    hostname: 'localhost', 
    livereload: 35729 
    }, 
    proxies: [{ 
    context: '/api', // the context of the data service 
    host: 'localhost', // wherever the data service is running 
    port: 8080, // the port that the data service is running on 
    https: false, 
    xforward: false 
    }], 

Мой Middleware:

livereload: { 
    options: { 
     open: true, 
     base: '', 
     middleware: function (connect, options) { 
     var middlewares = []; 

     middlewares.push(require('grunt-connect-proxy/lib/utils').proxyRequest); 

     middlewares.push(connect.static('.tmp')); 
     middlewares.push(connect.static('test')); 
     middlewares.push(connect().use(
      '/bower_components', 
      connect.static('./bower_components') 
     )); 
     middlewares.push(connect.static(appConfig.app)); 

     return middlewares; 
     } 
    } 
    }, 

Моя Подавать Задача

grunt.registerTask('serve', 'Compile then start a connect web server', function (target) { 
    if (target === 'dist') { 
    return grunt.task.run(['build', 'connect:dist:keepalive']); 
    } 

    grunt.task.run([ 
    'clean:server', 
    'wiredep', 
    'concurrent:server', 
    'autoprefixer:server', 
    'configureProxies:server', 
    'connect:livereload', 
    'watch' 
    ]); 
}); 

EDIT локальный: 8080/пользователи возвращает 403 в настоящее время с помощью Почтальон, поэтому API работает.

+0

Вы пытались с сервером: {} перед настройками? –

+0

Взгляните на этот вопрос .. Может быть, это поможет https://stackoverflow.com/questions/34321143/adding-grunt-connect-proxy-to-generator-angular-gruntfile-js – aprok

ответ

0

непосредственно не отвечая на ваш вопрос, но обеспечивая решение (так как никто другой ответил) ... вы пробовали модуль НПМ-подключения modrewrite

это именно то, что вы пытаетесь сделать.

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

       } 
      } 
     }, 

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