Конфигурация grunt-connect-proxy не работает через прокси

Я хотел бы правильно настроить grunt-connect-proxy для разработки и избежать проблем с CORS.

у меня есть

  • веб-сервис REST, работающий на локальном сервере Tomcat по адресу http://localhost:8080/mywebservice
  • клиентское приложение, созданное из генератора yeoman (v1.4.8), работающего на порту 9000. Оно подключается к указанному выше веб-сервису.

Я установил модуль npm:

>npm install grunt-connect-proxy --save-dev
[email protected] node_modules\grunt-connect-proxy
├── [email protected]
└── [email protected] ([email protected], [email protected])

моя конфигурация Gruntfile.js

require('jit-grunt')(grunt, {
    (...)
    configureProxies: "grunt-connect-proxy"
});
(...)
connect: {
  options: {
    port: 9000,
    hostname: 'localhost',
    livereload: 35729
  },
  proxies: [
     {
       context: ['/mywebservice'],
       host: 'localhost',
       port: 8080,
       changeOrigin: true
     }
   ],
  livereload: {
    options: {
      open: true,
      middleware: function (connect) {
        return [
          require('grunt-connect-proxy/lib/utils').proxyRequest,
          connect.static('.tmp'),
          (...)
          connect.static(appConfig.app)
        ];
      }
    }
  },
(...)
}

grunt.registerTask('serve', 'Compile then start a connect web server', function (target) {
(...)
    grunt.task.run([
      (...)
      'configureProxies:server',
      (...)
    ]);
});

Запрос не проходит через прокси-сервер, так как он по-прежнему отображается с источником http://localhost:9000. Я получил следующую ошибку:

XMLHttpRequest cannot load http://localhost:8080/xmlcompare-rs/xmlcompare. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access.

хотя grunt serve команда печатает

Running "configureProxies:server" (configureProxies) task
Proxy created for: /mywebservice to localhost:8080

Звонит в колокол?


person kdefombelle    schedule 26.04.2016    source источник


Ответы (1)


Кажется, проблема связана с конфигурацией вашего сервера служб REST. Используйте фильтр CORS, чтобы избежать этого исключения.

https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter

Реализация может отличаться в зависимости от используемого стека.

Надеюсь, это поможет

person Tony    schedule 26.04.2016
comment
Спасибо за Ваш ответ. Он работает с фильтром CORS на задней панели. Однако я ожидал, что это не понадобится благодаря опции changeOrigin. Во всяком случае, я вижу из примечаний к выпуску версии 0.1.11 (и так далее) 0.1.11 Исправить поддержку Websocket на узле 0.10 - Увеличена зависимость http-proxy до 1.1.4, Удалены неподдерживаемые параметры http-proxy (rejectUnauthorized , тайм-аут, changeOrigin) - person kdefombelle; 26.04.2016