API适用于浏览器,其中“请求”显示在“网络”中,但不适用于Angular2

时间:2017-11-30 05:43:16

标签: angular api cross-domain http-status-code-400

我尝试使用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时,我的输出如下所示。

enter image description here

如果我编写如下代码

$(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请求完成时甚至不应该调用它。

enter image description here

0 个答案:

没有答案