Я установил Oracle Mobile Hub и создал пользовательский API, который необходимо вызывать из мобильного клиента Ionic, использующего Oracle Mobile Cloud SDK. Пользовательский API (node.js) работает без ошибок при тестировании в Backend в Mobile Hub. Это выглядит так:
module.exports = function(service) {
service.get('/mobile/custom/patients/patients', function(req, res) {
req.oracleMobile.connectors.patients.get(null, null, null).then(
function(result){
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
res.setHeader("Access-Control-Allow-Credentials", "true");
res.setHeader("Cache-Control", "no-cache");
res.send(result.statusCode, result.result);
},
function(error){
res.send(500, error.error);
}
);
});
};
Однако, когда я вызываю этот API с мобильного клиента, на этапе аутентификации происходит сбой с этой обычно сообщаемой ошибкой:
Failed to load https://xx.mobile.ocp.oraclecloud.com/mobile/platform/users/login: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.
Я использую анонимную аутентификацию в моем клиенте Ionic:
this.mcs.init(mcsConfig);
this.mcs.mobileBackend.setAuthenticationType(this.mcs.AUTHENTICATION_TYPES.basic);
this.mcs.mobileBackend.authorization.authenticateAnonymous().then(function(response) {
console.log('anonymous authentication: success');
console.log(response);
}).catch(function(response){
console.log('anonymous authentication: failed');
console.log(response);
});
Итак, мой вопрос - должны ли заголовки Access-Control-Allow, которые я добавил в своем ответе Custom API, переопределять независимо от того, какое значение Security_AllowOrigin в Mobile Hub установлено? У меня также есть плагин Enable Cross-Origin Resource Sharing Chrome, активированный в моей среде отладки (Chrome). Любые идеи относительно того, как я мог бы решить это? Все результаты Google и собственные страницы справки Ionic указывают на добавление заголовков в ответе сервера в качестве решения.