it-swarm.com.de

webpack-dev-server-proxy funktioniert nicht

Ich möchte/v1/* an http://myserver.com übergeben, und hier ist mein Skript

 devServer: {
   historyApiFallBack: true,
   // progress: true,
   hot: true,
   inline: true,
   // https: true,
   port: 8081,
   contentBase: path.resolve(__dirname, 'public'),
   proxy: {
     '/v1/*': {
       target: 'http://api.in.uprintf.com',
       secure: false
         // changeOrigin: true
     }
   }
 },

aber es funktioniert nicht,  enter image description here

9
Arthur Xu

Update: Dank @chimurai ist die Einstellung von changeOrigin: true wichtig, damit es funktioniert.

Unterwebpack-dev-server übergibt die gesamte Proxy-Konfiguration an http-proxy-middleware aus der Dokumentation . Es ist klar, dass der gewünschte Anwendungsfall mit /v1/** Pfad tatsächlich erreicht wird:

devServer: {
   historyApiFallBack: true,
   // progress: true,
   hot: true,
   inline: true,
   // https: true,
   port: 8081,
   contentBase: path.resolve(__dirname, 'public'),
   proxy: {
     '/v1/**': {
       target: 'http://api.in.uprintf.com',
       secure: false,
       changeOrigin: true
     }
   }
 },
15
Yevgen Safronov

Stellen Sie sicher, dass Ihre Anforderungs-URL und der Port mit dem übereinstimmen, auf dem Ihr Webpack-Dev-Server ausgeführt wird. Wenn sich Ihre API unter http://localhost:5000 befindet und Ihr Dev-Server unter http://localhost:8080 ausgeführt wird, stellen Sie sicher, dass alle Ihre Anforderungen an http://localhost:8080 gerichtet sind. Am besten stellen Sie Ihre Anforderungen an localhost:8080/apium Konflikte mit App-Routen zu vermeiden) und verwenden Sie den Pfadumschreibvorgang, um die/api zu entfernen. 

Beispiel:

Webpack devserver Proxy-Konfiguration:

proxy: {
    '/api': {
        target: 'http://localhost:5000',
        pathRewrite: { '^/api': '' },
    },
}

Webpack-Dev-Server, auf dem ausgeführt wird:

http://localhost:8080

Gewünschter API-Endpunkt:

http://localhost:5000/items

Fordern Sie in Ihrer App die Anforderung an:

http://localhost:8080/api/items.

Dies _ (solltefunktionieren.) Es scheint mir, dass alle oben genannten Probleme darauf zurückzuführen sind, dass die Anforderung an die API-URL und den Port und nicht an die Webpack-Dev-Server-URL und den Port gesendet wird die API.

1
Jeff Weinberg

Das funktioniert gut für mich.

    devServer: {
        Host: '11.11.111.111',          //local ip
        port: 8080,
        contentBase: outputpath,
        historyApiFallback: true,
        inline: true,
        proxy: {
          '/api':{
                target:'http://example.com',
                pathRewrite: {'^/api' : ''},
                secure:false,
                changeOrigin:true
          }
        }
    },

//benutzen

    $.ajax({
        url:'/api/pvp/share/getsharecfg.php',
        dataType:'json',
        ...
0
He LI