奇怪... 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

就是这样,错误现在必须消失。

注意:这个解决方案只适用于本地环境我不知道它在生产中会如何表现。