咕噜声和CORS

时间:2014-11-07 17:01:31

标签: python angularjs gruntjs cors

我的团队使用grunt服务进行实时重新编译和重新加载我们的webapp,以便我们可以近乎实时地编辑和查看更改。我们的应用程序使用AngluarJS,因此站点上的所有操作都通过对服务器的API调用进行。

grunt服务器在localhost:9000上运行,但管理实际数据的服务器是用Python编写的,并在localhost:8000运行。因此,我们最终遇到CORS在“不同域”上遇到API的困难。现在的解决方案是打开一个新的Chrome实例,并设置--disable-web-security标记,但出于各种原因,我们需要远离它。

我们是否可以通过同一个域获取grunt服务和Python服务,或以其他方式消除此CORS问题?

1 个答案:

答案 0 :(得分:2)

已经有这方面的教程,希望这有帮助,你可以使用代理:
https://github.com/drewzboto/grunt-connect-proxy

教程:
https://github.com/saschakiefer/generator-openui5/wiki/How-to-setup-a-proxy-to-avoid-CORS-issues

取自页面:

connect: {
    options: {
        port: 8080,
        livereload: 35729,
        hostname: "localhost",
        base: "."
    },
    proxies: {
        context: "/Northwind",  // When the url contains this...
        host: "services.odata.org", // Proxy to this host
        changeOrigin: true
    },
    livereload: {
        options: {
            middleware: function(connect, options) {
                if (!Array.isArray(options.base)) {
                    options.base = [options.base];
                }

                // Setup the proxy
                var middlewares = [require("grunt-connect-proxy/lib/utils").proxyRequest];

                // Serve static files.
                options.base.forEach(function(base) {
                    middlewares.push(connect.static(base));
                });

                return middlewares;
            }
        }
    }
}