Ionic framework 开发期间允许CORS签入meanjs.org应用程序?

Ionic framework 开发期间允许CORS签入meanjs.org应用程序?,ionic-framework,cors,mean-stack,meanjs,Ionic Framework,Cors,Mean Stack,Meanjs,我正在使用meanjs.org堆栈开发一个简单的应用程序。现在我正在使用ionic框架开发移动客户端 我目前遇到的问题是,在测试ionic应用程序时,CORS检查会导致错误,如下所述: 虽然我可以按照该链接中的描述设置代理,但如果我将响应头添加到服务器端,它也会起作用,如:res.header(“访问控制允许源”,“*”) 将此添加到每个端点感觉不太好,我想找到一个解决方案,在开发过程中使用,我可以禁用CORS检查 我还尝试在config/env/default.js上更改lusca配置设置xs

我正在使用meanjs.org堆栈开发一个简单的应用程序。现在我正在使用ionic框架开发移动客户端

我目前遇到的问题是,在测试ionic应用程序时,CORS检查会导致错误,如下所述: 虽然我可以按照该链接中的描述设置代理,但如果我将响应头添加到服务器端,它也会起作用,如:
res.header(“访问控制允许源”,“*”)

将此添加到每个端点感觉不太好,我想找到一个解决方案,在开发过程中使用,我可以禁用CORS检查

我还尝试在config/env/default.js上更改lusca配置设置
xssProtection:false
bit不起作用

在开发过程中,我如何启用以下响应头
res.header(“访问控制允许来源”、“*”)
在所有端点中,在开发过程中使用meanjs.org+ionic是否可能或唯一可行的解决方案是设置代理


感谢您的开发,您可以设置代理以避免CORS问题

将ionic.project文件设置为类似以下内容:

{
 "name": "proxy-example",
 "app_id": "",
 "proxies": [{
  "path": "/api",
  "proxyUrl": "http://example.com/api"
 }]
}
然后从控制器调用api,如下所示

.controller('MyController', function($http) {
     $http.post('/api/getMoreDeatils',data)
          .then(function (response) {
       //do something
     })
})

希望这对您有所帮助

尝试在服务器主文件中使用如下中间件:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

过了一段时间,我终于在meanjs.org论坛上得到了一个提示,并构建了一个解决方案

在config/lib/express.js文件上创建以下方法:

/**
 * Disable CORS check to be used during development with access from mobile clients (currently tested with ionic)
 */
module.exports.disableCORSForDev = function(app) {
  app.all('/*', function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Credentials', true);
    res.header('Access-Control-Allow-Methods', 'POST');
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
    next();
  }).options('*', function(req, res) {
    res.end();
  });
  var corsOptionsDelegate = function(req, callback) {
    var corsOptions = { credentials: true };
    callback(null, corsOptions); // callback expects two parameters: error and options
  };
  app.use(cors(corsOptionsDelegate));
};
在声明var app=express()之后,在同一个类上的方法init中添加了以下内容:

注意:这是一个服务器端解决方案在开发过程中绕过cors,不应在生产中使用,许多人可能更喜欢在ionic客户端上设置代理,如本文所述


如果您正在添加代理,则无需将res.header设置为服务器端。它将与proxy OnlyTanks一起工作,以提供帮助,但正如我在问题中提到的,我正在寻找一种解决方案,其中服务器端API实现上的标志将启用或禁用此功能。我们已经知道的问题中描述的代理方法。当做
var app = express();

this.disableCORSForDev(app);