2016-10-29 19 views
8

Używam szablonu vue-cliwebpack-simple do generowania moich projektów, a ja chciałbym prosić o serwer proxy na osobny serwer zaplecza. Jak można to łatwo osiągnąć?Żądania proxy na oddzielnym serwerze zaplecza z vue-cli

+1

naprawdę nie warto dokładnie przyjrzeć 'boilerplate Vue-cli' i używane [ten generator yeoman] (https://github.com/fountainjs/generator-fountain-vue) zamiast tego. Zacząłem, nawet gdy miałem małą wiedzę na temat webpack/gulp/browser-sync (chociaż było kilka gotch, kiedy próbowałem zintegrować go z backendem). Myślę, że warto spojrzeć i wybrać pomiędzy "vue-cli" a tym. –

Odpowiedz

11

Jeśli używasz webpack szablon z vue-cli, można znaleźć wymagane informacje zawarte w tym dokumencie referencyjnym:

http://vuejs-templates.github.io/webpack/proxy.html

Albo zamiast zmieniać szablon teraz, można skopiować odpowiedni config z szablon webpack do lokalnego szablonu webpack-simple.

EDIT: Więcej informacji z mojej lokalnej konfiguracji

To co mam w config/index.js pod module.exports:

dev: { 
    env: require('./dev.env'), 
    port: 4200, 
    assetsSubDirectory: 'static', 
    assetsPublicPath: '/', 
    proxyTable: { 
     '/api': { 
      target: 'http://localhost:8080', 
      changeOrigin: true 
     }, 
     '/images': { 
      target: 'http://localhost:8080', 
      changeOrigin: true 
     }, 
     // and so on... 

Powyższa konfiguracja przebiega mój vue-cli na porcie 4200, a ja prowadzę serwer na porcie 8080.

EDYCJA: poprawione informacje o CORS po komentarzu nr 4 i nr 5

Uwaga:

  • Opcja changeOrigin w dev.proxyTable (w WebPACK config) gwarantuje, że nie trzeba służyć nagłówki Cors na swoich odpowiedziach API serwera.
  • Jeśli z jakiegokolwiek powodu postanowisz pominąć changeOrigin, musisz upewnić się, że interfejs API serwera zawiera Access-Control-Allow-Origin: * (lub odpowiednik) w nagłówkach odpowiedzi.

Referencje:

  1. https://stackoverflow.com/a/36662307/654825
  2. https://github.com/chimurai/http-proxy-middleware
+0

Czy korzystanie z prostego szablonu jest trudniejsze? –

+1

Myślę, że "webpack-simple" ma na celu rozpoczęcie pracy z Vue.js. Szablon 'webpack' zapewnia dużo więcej konfiguracji, a nawet zawiera [szczegółową stronę pomocy] (http://vuejs-templates.github.io/webpack/) w celu uzyskania dodatkowych informacji. – Mani

+1

Jak słusznie powiedziałeś, później stanie się trudniejsze, jeśli zaczniesz od prostego szablonu i napiszesz dużo kodu, ponieważ musisz sam wykonać wszystkie dodatkowe czynności konfiguracyjne. – Mani