Странный Angular Proxy не работает должным образом

Я работаю над проектом Angular / Laravel , но у меня возникают проблемы с правильной настройкой прокси-сервера Grunt, я Я выполнил несколько руководств и провел некоторые исследования, чтобы решить эту проблему, но мне это не удалось.

Проблема в том, что настроенный прокси не перенаправляет на хост как должно быть, я настроил пересылать запрос с /localhost:9000/api на /localhost:8000/api, но когда я делаю запрос:

URL-адрес реферера: http://localhost:9000/api/whataver
URL-адрес запроса: http://localhost:9000/api/whatever

Делает ли запрос на тот же хост, поэтому запросы не являются прокси-сервером правильно, какие-либо предложения?

Вот часть моего файла grunt:

connect: {
  options: {
    port: 9000,
    // Change this to '0.0.0.0' to access the server from outside.
    hostname: '127.0.0.1',
    livereload: 35729
  },
  proxies: [
      {
          context: '/api',
          host: '127.0.0.1',
          port: 8000,
          https: false,
          changeOrigin: false
      }
  ],
  livereload: {
    options: {
      open: true,
      base: [
       '.tmp',
       '<%= yeoman.app %>'
      ],
      middleware: function (connect,options) {

        var middlewares = [];
        
        if (!Array.isArray(options.base)) {
          options.base = [options.base];
        }

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

        //server static files
        middlewares.push(
          modRewrite(['^[^\\.]*$ /index.html [L]']),
          connect.static('.tmp'),
          connect().use(
            '/bower_components',
             connect.static('./bower_components')
          ),
          connect.static(appConfig.app)
        );
        return middlewares;
      }
    }
  }

Буду признателен за любую помощь, Спасибо!


person Héctor William    schedule 18.02.2015    source источник
comment
Привет, Гектор, я столкнулся с точно такой же проблемой, тебе когда-нибудь удавалось найти решение? Спасибо!   -  person danboh    schedule 16.08.2015
comment
Привет, danboh, да, я нашел решение... Дайте мне знать, как вы это делаете, и, возможно, я смогу вам помочь... Однако я опубликую решение, которое я нашел, с моей реальной конфигурацией. Приветствует   -  person Héctor William    schedule 16.08.2015


Ответы (2)


Этот ответ должен помочь

AngularJS с Grunt — подключение к другому серверу

Строго проверьте свой код с помощью шагов, упомянутых в ответе. Ты получишь это.

person user1632989    schedule 08.03.2015

Прошло много времени с тех пор, как я задал этот вопрос. Я нашел решение тогда, но я никогда не публиковал свое решение, так что вот оно:

Во-первых, с конфигурацией все было в порядке, и в моем Laravel, и в Angular все было в порядке. Судя по всему, проблема заключалась в ошибке с прокси-сервером Laravel:

Когда вы обслуживаете свое приложение Laravel командой artisan:

php artisan serve 

По умолчанию он работает с localhost:8000, это правильно.

Когда вы обслуживаете свое приложение Angular с хрюканьем:

grunt serve

По умолчанию он работает в localhost:9000, это тоже нормально, но поскольку оба сервера используют логический localhost, это вызывает некоторую ошибку в приложении Laravel.

Это можно решить так же просто, как работать на том же локальном хосте, но, другими словами, буквально. вот решение:

php artisan serve --host 127.0.0.1

И все, ошибка должна исчезнуть к настоящему времени.

примечание. Это решение применимо только к локальной среде. Я не знаю, как оно будет вести себя в производственной среде.

person Héctor William    schedule 16.08.2015