Angularjs 奇怪的角度代理无法正常工作

Angularjs 奇怪的角度代理无法正常工作,angularjs,gruntjs,yeoman,yeoman-generator-angular,Angularjs,Gruntjs,Yeoman,Yeoman Generator Angular,我正在从事一个Angular/Laravel项目,但是我在正确配置Grunt代理时遇到了问题,我遵循了一些教程并进行了一些研究以解决这个问题,但我没有成功 问题是,配置的代理没有按应有的方式重定向到主机,我设置为将请求从/localhost:9000/api转发到/localhost:8000/api,但当我发出请求时: 参考URL:http://localhost:9000/api/whataver 请求URL:http://localhost:9000/api/whatever 正在向同一主

我正在从事一个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;
      }
    }
  }
连接:{
选项:{
港口:9000,
//将此更改为“0.0.0.0”以从外部访问服务器。
主机名:“127.0.0.1”,
利弗雷罗德:35729
},
代理:[
{
上下文:'/api',,
主持人:“127.0.0.1”,
港口:8000,
https:false,
更改来源:错误
}
],
利弗雷罗德:{
选项:{
开放:是的,
基数:[
“.tmp”,
''
],
中间件:功能(连接、选项){
var middleware=[];
if(!Array.isArray(options.base)){
options.base=[options.base];
}
//设置代理
push(require('grunt-connect-proxy/lib/utils').proxyRequest);
//服务器静态文件
推(
modRewrite(['^[^\\.]*$/index.html[L]']),
connect.static('.tmp'),
连接()。使用(
“/bower_组件”,
连接.静态(“./bower_组件”)
),
connect.static(appConfig.app)
);
退货;
}
}
}

非常感谢您的帮助,谢谢!

这个答案应该会有所帮助

严格按照答案中提到的步骤检查代码。
你会明白的。

我很久没有问过这个问题了。我当时找到了解决方案,但我从未发布过我的解决方案,所以它是这样的:

首先,配置没有问题,我的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
就这样,虫子现在已经消失了


注意:此解决方案仅适用于本地环境,我不知道它在生产中会如何运行。

嘿,赫克托,我在这里面临完全相同的问题,你能找到解决方案吗?谢谢!你好,丹波,是的,我找到了一个解决方案…让我知道你的做法,也许我能帮助你…不过我很抱歉我将发布我找到的解决方案和我的实际配置。欢迎