在开发期间允许 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.
我正在使用 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.