我有一个离子应用程序(使用角度js)。我正在尝试使用restangular api调用我的localserver(node express)(还尝试使用$ http.get)。
我将基本网址设为
RestangularProvider.setBaseUrl('https://localhost:3000');
我定义了一个拦截器来添加自定义标头:
interceptors.serialNumber = function (element, operation, what, url, headers, query) {
return {
headers: angular.extend({
'x-serialnumber': deviceStore.serialNumber
}, headers)
};
};
我尝试了以下restangular调用:
Restangular.one('Admin').get()
.then(function (data) {
console.log(data);
});
}, function (error) {
console.log(error);
});
以及使用$ http调用的以下内容:
$http({
method: 'GET',
url: 'https://localhost:3000/Admin',
headers: {
'Content-Type': 'application/json',
'x-serialnumber': '000000000'
}
}).then(function (data) {
console.log(data);
}, function (error) {
console.log(error);
});
我总是得到错误条件,其中data = null | status = -1 |状态文本= “”
我在服务器端没有看到任何请求。它会立即进入失败案例。
如果删除自定义标题,我会在服务器端看到请求并获得良好响应(即200)。
在服务器端,我使用的是cors模块: var app = express(); app.use(CORS());
答案 0 :(得分:0)
我需要做的是以下内容:
$http({
method: 'GET',
url: 'https://example.com/DUMMY'
}).then(function successCallback(response) {
$http({
method: 'GET',
url: 'https://example.com',
headers: {
'x-serialnumber': deviceStore.serialNumber
}
}).then(function successCallback(response) {
console.log('SUCCESS');
}, function errorCallback(response) {
console.log('FAILURE');
});
}, function errorCallback(response) {
console.log('FAILURE');
});
从本质上讲,我需要使用 NO 自定义标头发送“初步”GET请求。 GET请求可以是我的节点快速服务器上的任何内容。在此“初步”GET请求之后,我可以使用自定义标头执行GET请求。
特别是在服务器端,我看到以下内容:
GET /DUMMY 200 10ms - 2b
OPTIONS / 204 1ms
GET / 200 13ms - 1.03kb
如果不执行此“初步”获取请求,我的Ionic App中的OPTIONS请求将中止 - 状态代码= -1 - 通常意味着请求已中止,并且永远不要离开Ionic App。
我仍然不明白为什么我需要这个“初步”GET请求,但这对我有用。