2016-04-05 20 views
5

Ich versuche, die Webpack-dev-Server-Proxy-Konfiguration verwenden, um API-Anfragen an eine externe Domäne zu senden, und ich kann nicht scheinen, es funktioniert.Webpack-dev-Server sendet keine Anfragen an externe Domäne über Proxy

Hier ist meine config:

var path = require('path') 

module.exports = { 
    entry: './client/index.js', 
    output: { 
     filename: 'bundle.js', 
     path: path.resolve(__dirname, 'public/assets'), 
     publicPath: 'assets' 
    }, 
    devServer: { 
     contentBase: 'public', 
     proxy:{ 
      '/api/v1*': { 
       target: 'http://laravelandwebpack.demo/', 
       secure: false 
      } 
     } 
    } 
} 

also jederzeit meine app eine Anfrage mit der uri /api/v1... macht sollte es diese Anforderung an http://laravelandwebpack.demo senden.

In meiner Vue app, ich bin mit den vue-resource die Anforderungen zu machen, und ich bin alle Anfragen mit dem benötigten uri Präfix säumig:

var Vue = require('vue') 
Vue.use(require('vue-resource')) 

new Vue({ 
    el: 'body', 
    http: { 
     root: '/api/v1', // prefix all requests with this 
     headers:{ 
      test: 'testheader' 
     } 
    }, 
    ready: function(){ 
     this.$http({ 
      url: 'tasks', 
      method: 'GET' 
     }).then(function (response){ 
      console.log(response); 
     }, function (response){ 
      console.error(response); 
     }) 
    } 
}) 

Die URL richtig aufgebaut werden, aber sie sind noch localhost:8080 zeigen auf, welche der webpack-dev-Server:

Errant http request

ich gelesen und die Dokumentation für webpack-dev-Server neu zu lesen und ich kann nicht herausfinden, wo ich es falsch eingestellt habe . Irgendwelche Ideen?

+0

Die Urls richtig deuten auf 'localhost: 8080', denn das ist Ihr devserver ist, und erst nach dem Wunsch dort ankam, die devserver Willen Proxy es die externe (es aka senden durch) URL, die du zur Verfügung gestellt hast. Die Devtools werden den Proxy niemals bemerken. Was passiert mit Ihren Anforderungen, protokolliert der provey.catch() einen Fehler? Was ist es? (und Sie verwenden die webpack-Vorlage von vue-cli nicht zufällig?) –

Antwort

1

Ich habe eine Problemumgehung für dieses Problem gefunden. In meinem Fall muss ich Anfragen an mein Backend für irgendeinen /api/* Weg proxy, also überbreche ich alle Anfragen, die nicht mit API beginnen.

Probe: proxy: { '*': { target: 'http://localhost:8081', secure: false, rewrite: function(req) { console.log('rewriting'); req.url = req.url.replace(/^\/api/, ''); }, bypass: function(req, res, proxyOptions) { if (req.url.indexOf('api') !== 0) { console.log('Skipping proxy for browser request.'); return '/index.html'; }else{ return false; } } } }

+0

In welche Konfigurationsdatei haben Sie dieses Objekt gelegt? – partizanos