2016-04-16 14 views
6

Tôi muốn proxy/v1/* để http://myserver.com, và đây là kịch bản của tôiwebpack-dev-proxy server doesnt làm việc

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 
 
    } 
 
    } 
 
},

nhưng nó không hoạt động, enter image description here

+0

Bạn cần đặt cấu hình ở đâu? – zehelvion

Trả lời

10

Cập nhật: nhờ @chimurai, thiết lập changeOrigin: true là điều quan trọng để làm cho nó hoạt động.

Underneathwebpack-dev-server chuyển tất cả cấu hình proxy đến http-proxy-middleware, từ documentation. Rõ ràng các trường hợp sử dụng mà bạn muốn thực sự đạt được với /v1/** đường dẫn:

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 
    } 
    } 
}, 
+1

Cảm ơn câu trả lời của bạn, nhưng nó cũng không hoạt động. –

+5

Nên làm việc với tùy chọn proxy: 'changeOrigin: true' – chimurai

+0

' changeOrigin: true/false, Mặc định: false - thay đổi nguồn gốc của tiêu đề máy chủ thành URL mục tiêu 'Vâng, nó đã hoạt động. Cảm ơn câu trả lời của bạn! –

1

Hãy chắc chắn rằng địa chỉ yêu cầu của bạn và cổng phù hợp với điều mà webpack-dev-server của bạn đang chạy trên. Vì vậy, nếu api của bạn nằm ở số http://localhost:5000 và máy chủ dev của bạn đang chạy trên http://localhost:8080, hãy đảm bảo tất cả yêu cầu của bạn là http://localhost:8080. Tốt nhất của nó để thực hiện yêu cầu của bạn để localhost:8080/api (để tránh xung đột với các tuyến ứng dụng) và sử dụng đường dẫn viết lại để loại bỏ/api.

Ví dụ:

Webpack devserver Proxy cấu hình:

Webpack máy chủ dev chạy trên:

http://localhost:8080 

mong muốn API endpoint:

http://localhost:5000/items 

Trong ứng dụng của bạn, hãy gửi yêu cầu tới:

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

Điều này nên hoạt động. Dường như với tôi rằng tất cả các vấn đề trên xuất phát từ việc đưa ra yêu cầu tới url API và cổng thay vì url máy chủ webpack dev và cổng và sử dụng proxy và đường dẫn viết lại để chuyển yêu cầu đến API.

Các vấn đề liên quan