2016-04-20 2 views
2

J'ai un serveur de noeud et j'exige mes demandes d'api en utilisant http-proxy-middleware, semblable à ce qui se passe dans this post. Quand je proxy au vrai serveur de production tout fonctionne très bien, mais quand je pointe le proxy à un serveur local cela ne fonctionne tout simplement pas.Noeud http-proxy-middleware ne fonctionne pas avec les serveurs locaux en tant que targert

Ceci est mon code:

app.use('/_api', proxy({target: 'http://localhost:9000', changeOrigin: true}));

Le serveur sur:

http://localhost:9000/hello travaille (je peux y accéder depuis mon navigateur), mais, lorsque je tente d'y accéder à partir de mon propre serveur, comme ceci:

http://localhost:3000/_api/hello

Je reçois:

Impossible GET/_api/bonjour

Si je remplace localhost: 9000 avec le serveur réel, tout fonctionne ...

Répondre

3

Votre demande tente d'approximé accéder au serveur local en utilisant la demande initiale chemin.

Par exemple, lorsque vous demandez

http://localhost:3000/_api/hello

Votre proxy tente d'accéder

http://localhost:9000/_api/hello

Le chemin _api/hello n'existe pas sur votre localhost:9000, qui est représenté par l'erreur Cannot GET /_api/hello .

Vous devez réécrire vos chemins de demande proxies pour enlever la partie _api:

app.use('/_api', proxy({ 
    target: 'http://localhost:9000', 
    changeOrigin: true, 
    pathRewrite: { 
     '^/_api' : '/' 
    } 
})); 
+0

C'était exactement ce que je avais besoin, merci! –