在开发期间允许 CORS 检查 meanjs.org 应用程序?

Permissive CORS check in meanjs.org application during development?

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

我遇到的当前问题是 CORS 检查在测试离子应用程序时导致错误,如下所述:http://blog.ionic.io/handling-cors-issues-in-ionic/ 虽然我可以按照 link 中的描述设置代理,但如果我将响应 header 添加到服务器端,它也可以工作,例如:res.header("Access-Control-Allow-Origin", "*");

将它添加到每个端点感觉不太好,我想找到一个在开发期间使用的解决方案,我可以在其中禁用 CORS 检查。

我也试过更改 config/env/default.js 上的 lusca 配置 xssProtection: false 位不起作用?

在开发过程中,我如何在所有端点启用以下响应 header res.header("Access-Control-Allow-Origin", "*");,这是否可能,或者在开发过程中使用 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();

之后,在同一 class 的方法 init 中添加了以下内容
var app = express();

this.disableCORSForDev(app);

Note: This is a server side solution to bypass cors during development and should not be used in production, many may prefer to setup a proxy on the ionic client instead as it's described in this ionic article.