因此,我试图构建2个单独的应用程序1,用作后端(Laravel作为REST API)和Angular应用程序作为客户端,最终这2个应用程序必须在同一个域中作为单个Web应用程序一起工作。< / p>
我想要完成的任务:
我的Angular应用程序是一个从index.html启动的单页面应用程序,所有路由都由Angular处理,除了应该由Laravel应用程序处理的/ api / *。 我使用2个不同的应用程序来构建更具动态性的Web应用程序,因此我可以轻松地更改我的后端框架和技术,并将每个应用程序作为一个独立的应用程序进行测试。更容易。 我不想在我的响应头中使用CORS,因为我的REST API仅用于我的Angular应用程序而不是其他应用程序,例如开发人员的api。 我想使用代理,将所有来自http://localhost:9100/api/ *的请求转发给:http://localhost:9000/api/ *
首先通过运行以下命令在端口9000上运行Laravel:
php artisan serve --port 9000
通过运行gulp任务(index.html在路径./src中)和端口9100下的Angular应用程序:
gulp.task('webserver', function(){
connect.server({
root: './src',
port: 9100,
middleware: function(connect, o) {
var url = require('url');
var proxy = require('proxy-middleware');
var options = url.parse('http://localhost:9000/api');
options.route = '/api';
return [proxy(options)];
}
});
});
这两个应用程序都可以完美地作为一个独立的应用程序,但是当我尝试导航到: http://localhost:9100/api/v1/comments我收到以下错误:
错误:在Object.afterConnect的[errnoException(net.js:904:11)处连接ECONNREFUSED [as oncomplete](net.js:895:19)
我试图调查此问题的原因,有人说它连接到我的hosts文件,所以我不得不添加行: 127.0.0.1 localhost
但它不起作用。 我尝试了不同的gulp任务:
gulp.task('webserver', function() {
gulp.src("./src")
.pipe(webserver({
port: 9100,
livereload: true,
open: 'http://localhost:9100',
proxies: [
{
source: '/api', target: 'http://localhost:9000/api'
}
]
}));
});
我收到完全相同的错误......
我的开发环境是Windows 10 x64位。
答案 0 :(得分:1)
您是否尝试使用http-proxy-middleware代替proxy-middleware
?
我在proxy-middleware
时遇到了同样的错误。 (Gulp browser-sync - redirect API request via proxy)
Error: connect ECONNREFUSED
at errnoException (net.js:904:11)
at Object.afterConnect [as oncomplete] (net.js:895:19)
结束创建http-proxy-middleware,解决了我的问题。
proxy-middleware
不知何故在公司网络上无法运作。 http-proxy
就是这么做的。 (http-proxy-middleware使用http-proxy进行实际代理)
猜猜你在使用gulp-webserver
;代理可以添加如下:
var proxyMiddleware = require('http-proxy-middleware');
gulp.task('webserver', function() {
gulp.src("./src")
.pipe(webserver({
port: 9100,
livereload: true,
open: 'http://localhost:9100',
middleware: [proxyMiddleware('/api', {target: 'http://localhost:9000'})]
}));
});
从未发现为什么在公司网络中使用代理中间件抛出此错误...
<强>更新强>
认为这个问题已经回答:
这是工匠服务器的问题,必须以这种方式运行:
php artisan serve --host 0.0.0.0
来源:
https://github.com/chimurai/http-proxy-middleware/issues/38
https://github.com/chimurai/http-proxy-middleware/issues/21#issuecomment-138132809