奇怪... Angular 代理无法正常工作
Weird... Angular Proxy not working properly
我正在研究 Angular / Laravel 项目,但我在正确配置 Grunt 代理时遇到了问题,我已经按照几个教程进行了研究并进行了一些研究以解决这个问题,但我没有成功。
问题是配置的代理没有重定向到主机,我设置将请求从 /localhost:9000/api
转发到 /localhost:8000/api
,但是当我发出请求时:
推荐人URL:http://localhost:9000/api/whataver
请求 URL : http://localhost:9000/api/whatever
正在向同一主机发出请求,因此请求未被正确代理,有什么建议吗?
这是我的 grunt 文件的一部分:
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: '127.0.0.1',
livereload: 35729
},
proxies: [
{
context: '/api',
host: '127.0.0.1',
port: 8000,
https: false,
changeOrigin: false
}
],
livereload: {
options: {
open: true,
base: [
'.tmp',
'<%= yeoman.app %>'
],
middleware: function (connect,options) {
var middlewares = [];
if (!Array.isArray(options.base)) {
options.base = [options.base];
}
// Set up the proxy
middlewares.push(require('grunt-connect-proxy/lib/utils').proxyRequest);
//server static files
middlewares.push(
modRewrite(['^[^\.]*$ /index.html [L]']),
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
);
return middlewares;
}
}
}
非常感谢任何帮助,谢谢!
这个答案应该有帮助
AngularJS with Grunt - Connect to another server
严格按照answer中提到的步骤检查你的代码。
你会得到的。
好久没问这个问题了。当时我找到了解决方案,但我从未发布过我的解决方案,所以这里是:
首先配置没有问题,我的 Laravel 和 Angular 一切正常。显然问题是 Laravel 代理的错误:
当您使用 artisan 命令为您的 Laravel 应用提供服务时:
php artisan serve
默认服务于localhost:8000,没有错
当您使用 grunt 服务您的 Angular 应用时:
grunt serve
默认情况下,它在 localhost:9000 中提供服务,它也可以,但是作为两个服务器都使用逻辑 localhost,那么这是在 Laravel 应用程序中造成一些错误。
它可以像在同一个本地主机上服务一样简单地解决,换句话说,从字面上看。这是解决方案:
php artisan serve --host 127.0.0.1
就是这样,错误现在必须消失。
注意:这个解决方案只适用于本地环境我不知道它在生产中会如何表现。
我正在研究 Angular / Laravel 项目,但我在正确配置 Grunt 代理时遇到了问题,我已经按照几个教程进行了研究并进行了一些研究以解决这个问题,但我没有成功。
问题是配置的代理没有重定向到主机,我设置将请求从 /localhost:9000/api
转发到 /localhost:8000/api
,但是当我发出请求时:
推荐人URL:http://localhost:9000/api/whataver
请求 URL : http://localhost:9000/api/whatever
正在向同一主机发出请求,因此请求未被正确代理,有什么建议吗?
这是我的 grunt 文件的一部分:
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: '127.0.0.1',
livereload: 35729
},
proxies: [
{
context: '/api',
host: '127.0.0.1',
port: 8000,
https: false,
changeOrigin: false
}
],
livereload: {
options: {
open: true,
base: [
'.tmp',
'<%= yeoman.app %>'
],
middleware: function (connect,options) {
var middlewares = [];
if (!Array.isArray(options.base)) {
options.base = [options.base];
}
// Set up the proxy
middlewares.push(require('grunt-connect-proxy/lib/utils').proxyRequest);
//server static files
middlewares.push(
modRewrite(['^[^\.]*$ /index.html [L]']),
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
);
return middlewares;
}
}
}
非常感谢任何帮助,谢谢!
这个答案应该有帮助
AngularJS with Grunt - Connect to another server
严格按照answer中提到的步骤检查你的代码。 你会得到的。
好久没问这个问题了。当时我找到了解决方案,但我从未发布过我的解决方案,所以这里是:
首先配置没有问题,我的 Laravel 和 Angular 一切正常。显然问题是 Laravel 代理的错误:
当您使用 artisan 命令为您的 Laravel 应用提供服务时:
php artisan serve
默认服务于localhost:8000,没有错
当您使用 grunt 服务您的 Angular 应用时:
grunt serve
默认情况下,它在 localhost:9000 中提供服务,它也可以,但是作为两个服务器都使用逻辑 localhost,那么这是在 Laravel 应用程序中造成一些错误。
它可以像在同一个本地主机上服务一样简单地解决,换句话说,从字面上看。这是解决方案:
php artisan serve --host 127.0.0.1
就是这样,错误现在必须消失。
注意:这个解决方案只适用于本地环境我不知道它在生产中会如何表现。