2

私の開発環境では、grunt connect with livereload を使用しています。

/server の下にある本番 API を呼び出せるようにしたいと考えています。

そのためには、次からの呼び出しを転送する必要があります

http://localhost:9000/server

http://www.production-server.com/server

これは私にとっては良いことです。なぜなら、開発モードで運用サーバーに対してテストしたい場合があるからです。

これが私の現在の接続構成です(Yeomanによって生成されました):

connect: {
  options: {
    port: 9000,
    // Change this to '0.0.0.0' to access the server from outside.
    hostname: 'localhost',
    livereload: 35729
  },
  livereload: {
    options: {
      open: true,
      middleware: function(connect, options, middlewares) {
        return [
          connect.static('.tmp'),
          connect().use(
            '/bower_components',
            connect.static('./bower_components')
          ),
          connect.static(appConfig.app)
        ];
      }
    }
  },
  test: {
    options: {
      port: 9001,
      middleware: function(connect) {
        return [
          connect.static('.tmp'),
          connect.static('test'),
          connect().use(
            '/bower_components',
            connect.static('./bower_components')
          ),
          connect.static(appConfig.app)
        ];
      }
    }
  },
  dist: {
    options: {
      open: true,
      base: '<%= yeoman.dist %>'
    }
  }
},

4

1 に答える 1

9

問題と解決策を見つけました:

最初に行うことは、プロキシを実行できるように grunt-connect-proxy grunt タスクを使用することです (そこでは本当に何でもできます)。構成は明らかではありませんが、ここですべての情報 (および例) を見つけることができます: https://www.npmjs.org/package/grunt-connect-proxy

私の特定の問題は、私のサーバーが同じドメインから来ていない呼び出しを受け入れなかったため、ドメイン名を使用して構成に「ヘッダー」プロパティを追加することだけでした。新しい構成は次のようになります。

    connect: {
        options: {
            port: 9000,
            // Change this to '0.0.0.0' to access the server from outside.
            hostname: 'localhost',
            livereload: 35729
        },
        server: {
            proxies: [
                {
                    context: '/server',
                    host: 'production-server.com',
                    post: 80,
                    changeOrigin: true,
                    headers: {
                        host: 'simple-layout.com'
                    }
                }
            ]
        },
        livereload: {
            options: {
                open: true,
                middleware: function (connect) {
                    return [
                        proxySnippet,
                        connect.static('.tmp'),
                        connect().use(
                            '/bower_components',
                            connect.static('./bower_components')
                        ),
                        connect.static(appConfig.app)
                    ];
                }
            }
        },
        test: {
            options: {
                port: 9001,
                middleware: function (connect) {
                    return [
                        connect.static('.tmp'),
                        connect.static('test'),
                        connect().use(
                            '/bower_components',
                            connect.static('./bower_components')
                        ),
                        connect.static(appConfig.app)
                    ];
                }
            }
        },
        dist: {
            options: {
                open: true,
                base: '<%= yeoman.dist %>'
            }
        }
    },
于 2014-11-04T18:42:53.057 に答える