2016-12-27 13 views
6
ben yapmaya çalışıyorum ne

:Düğüm Vekil - Vekil temel bir http sunucusundan bir SSL localhost hedef

proxy sırayla SSL olmayan http://127.0.0.1:1337/ üzerinde çalışan kenarı boyunca https://127.0.0.1:443/api/ benim UI çalışan bir java api bazı CORS sorunlarının etrafından dolaşmak.

girişimim:

  1. Vekil 1338.
  2. vekil benim SSL olmayan gelişme portuna SSL portu 443 olarak API :8080/index.html ve proxy 1337
  3. benim UI Vekil 1137 8080
: 1338 Erişim localhost'tan benim app
  • :8080/api/ için

    Benim sorun:

    UI sadece iyi geliyor ... ama :8080/api/httpSession/init

    de API vuramaz Evet, hala https://localhost/api/httpSession/init

    api.js de API vurabilir - Vekil 133 1337

    var app = express(); 
    
    app.all('*', function (req, res, next) { 
        res.header('Access-Control-Allow-Origin', '*'); 
        res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); 
        res.header('Access-Control-Allow-Headers', 'Content-Type'); 
        next(); 
    }); 
    
    var options = { 
        changeOrigin: true, 
        target: { 
         https: true 
        } 
    }; 
    
    httpProxy.createServer(443, '127.0.0.1', options).listen(1338); 
    

    start.js: - de index.html oluşturur 7 ve 1338 vekil sorunu için

    // First I start my two servers 
    uiServer.start(); // renders index.html at 1337 
    apiServer.start(); // 
    
    // I attempt to patch them back into one single non-SSL port. 
    app 
        .use('/', proxy({target: 'http://localhost:1337/'})) 
        .all('/api/*', proxy({target: 'http://localhost:1338/'})) 
        .listen(8080, function() { 
        console.log('PROXY SERVER listening at http://localhost:%s', 8080); 
        }); 
    
  • +0

    Nginx'i ihtiyacınız olanı elde etmek için bir ters proxy olarak kullanmanızı öneririm. [Here] (https://www.garron.me/en/linux/nginx-reverse-proxy.html), ihtiyacınız olan şeylere benzer bir şey elde etmek için bazı talimatlardır. [Bu] (http://serverfault.com/questions/706694/use-nginx-as-reverse-proxy-for-multiple-servers) ayrıca yardımcı olmalısınız ... – mkhanoyan

    +0

    Api'nizi iki kez proxy yapan bir sebep var mı ? Önce 1338 numaralı bağlantı noktasına, daha sonra 8080 numaralı bağlantı noktasına/api /? –

    +0

    Bunun konu dışı olduğunu biliyorum, ancak aynı bağlantı noktasında bunu gerçekleştirmek için ters proxy ile bir web sunucusu da kullanabilirsiniz. Örneğin, bir sanal sunucuda ters proxy uç noktalarını ayırmak için IIS veya Nginx'i kullanabilirsiniz. –

    cevap

    2

    Aradığınız şey request piping. Bu örneği deneyin:

    // Make sure request is in your package.json 
        // if not, npm install --save request 
        var request = require('request'); 
    
        // Intercept all routes to /api/... 
        app.all('/api/*', function (req, res) { 
        // Get the original url, it's a fully qualified path 
        var apiPath = req.originalUrl; 
    
        // Form the proxied URL to your java API 
        var url = 'https://127.0.0.1' + apiPath; 
    
        // Fire off the request, and pipe the response 
        // to the res handler 
        request.get(url).pipe(res); 
        }); 
    

    api böyle this SO solution gibi ulaşılamazsa eğer işleme bazı hata eklemeyi emin olun.

    1

    8080 içine, benim tahminim bu url /api/* tutuyor ve bu API hizmeti yönlendirici bulunmayan olmasıdır. Url dizesini gönderirken aynı kalmaya devam edeceğinden, API hizmetindeki yönlendiriciye /api eklemeyi deneyebilirsiniz. Aksi halde, muhtemelen URL'yi proxy'ye yazmalı ve URL'yi yeniden yazmalıdır. Böylece API, isteği bir rotayla eşleştirecektir.

    Başka bir notta, cors modülünü kurup uygulamada kullanmaktan ne haber? Benzer bir şey yapıyorum ve tüm proxy öğeleri olmadan iyi çalışıyor. https://www.npmjs.com/package/cors

    İlgili konular