我尝试使用Angular 2调用API,但它发送了CORS错误。但是,如果我尝试从http://www.webtoolkitonline.com/javascript-tester.html(Javascript Tester)或http://hurl.it调用相同的API,则会正确执行它。
我也试过从客户端添加标题。
我的角色代码如下
private _apiCountryUrl = 'http://52.179.4.123/smvs/index.jsp?json={"COUNTRY":[{"ACTION":"SELECT"}]}';
getTotalCountry() : Observable<ICountry[]> {
let headersNew = new HttpHeaders();
headersNew.append('Access-Control-Allow-Headers', 'Content-Type');
headersNew.append('Access-Control-Allow-Methods', 'GET');
headersNew.append('Access-Control-Allow-Origin', '*');
return this._http.get<ICountry[]>(this._apiCountryUrl, {headers: headersNew})
.do(data => console.log('Country' + JSON.stringify(data)))
.catch(this.handleError);
}
调用API时,我的输出如下所示。
如果我编写如下代码
$(document).ready(function() {
$.ajax({
type: 'GET',
url: 'http://52.179.4.123/smvs/index.jsp?json=%7B%22COUNTRY%22%3A%5B%7B%22ACTION%22%3A%22SELECT%22%7D%5D%7D',
success: function(res) {
alert(res);
},
error: function(error) {
alert("error!" + JSON.stringify(error));
}
});
});
上面的代码与http://www.webtoolkitonline.com/javascript-tester.html一致,但是不会从Angular2调用相同的API。如果它的服务器端错误,则在jQUery请求完成时甚至不应该调用它。