2016-11-23 58 views
0

我有一个离子应用程序(使用角度js)。我正在尝试使用restangular API(也尝试使用$ http.get)调用我的localserver(node express)。

我设定为

RestangularProvider.setBaseUrl('https://localhost:3000'); 

我已拦截定义添加自定义首部的基本URL:

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

我总是得到错误条件where data = null |状态= -1 | statusText =“”

我在服务器端看不到任何请求。它立即进入失败案例。

如果我删除自定义标题,我会在服务器端看到请求并获得很好的响应(即200)。

在服务器端,我使用了cors模块: var app = express(); app.use(cors());

+0

所有证据指向deviceStore.serialNumber引发空指针异常(deviceStore未定义) – Andonaeus

+0

感谢您对Andonaeus的回应。我证实它不是null。同样,$ http的情况下我硬编码头值(x-serialnumber),并得到与矩形案例相同的错误 – brent

+1

如果您使用的是CORS,您是否已将自定义头添加到允许的头列表中? – Amy

回答

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 

没有执行该“初步” get请求,该选项在我的应用离子请求将中止 - 状态码= -1 - 通常意味着请求被中止,永远不会离开Ionic App端。

我还是不明白为什么我需要这个“初步”GET请求,但这对我很有用。