Ionic 在meanjs.org开发过程中允许在www.example.com应用程序中进行CORS检查?

cgh8pdjw  于 2023-04-18  发布在  Ionic
关注(0)|答案(3)|浏览(137)

我正在使用meanjs.org堆栈开发一个简单的应用程序。现在我正在使用离子框架开发移动的客户端。
我目前的问题是CORS检查在测试离子应用程序时导致错误,如下所述:http://blog.ionic.io/handling-cors-issues-in-ionic/ .虽然我可以设置一个代理,如该链接中所述,它也可以工作,如果我添加响应头到服务器端,如:res.header("Access-Control-Allow-Origin", "*");
将此添加到每个端点感觉不太好,我想找到一个解决方案,在开发过程中使用,我可以禁用CORS检查。
我也试过在config/env/default.js上更改lusca配置,设置xssProtection: false位不起作用?
在开发过程中,我如何在所有端点中启用以下响应头res.header("Access-Control-Allow-Origin", "*");,在开发过程中使用www.example.com + Ionic是否可能或唯一可行的解决方案meanjs.org是设置代理?

tgabmvqs

tgabmvqs1#

对于开发,您可以设置代理以避免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
     })
})

希望这对你有帮助

ef1yzkbh

ef1yzkbh2#

尝试在服务器主文件中使用这样的中间件:

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();
});
vktxenjb

vktxenjb3#

过了一段时间,我终于在www.example.com论坛上得到了提示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方法中;

var app = express();

this.disableCORSForDev(app);

注意:这是一个服务器端解决方案,用于在开发过程中绕过cors,不应用于生产,许多人可能更喜欢在离子客户端上设置代理,而不是像ionic article中所描述的那样。

相关问题