2016-06-29 5 views
4

Web ApiエンドポイントをAngular 2から呼び出そうとしています。 IEとChromeではすべて正常に動作しますが、Firefoxではjson解析エラーが発生します。 私はJsonの代わりにXMLを返すと思います。 私はcontent-typeの設定がこれを修正したと考えました。 私のコードは正しいか?何か案は?Angular 2 Http Firefoxで常にXMLを返すには

let headers = new Headers({ 'Accept': 'application/json' }); 
let options = new RequestOptions({ headers: headers }); 

return this._http.get(_tileUrl, options) 
    .map((response: Response) => <ITile[]>response.json()) 
      .catch(this.handleError); 

Content-Typeヘッダはあなたが送ったコンテンツの種類を説明します

let _tileUrl = XXX; 

    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 

    return this._http.get(_tileUrl, options) 
     .map((response: Response) => <ITile[]>response.json()) 
       .catch(this.handleError); 

答えて

7

私はあなたの代わりにAcceptヘッダを使うべきだと思います。あなたが応答を期待Acceptコンテンツ...あなたは、この要求はあなたのHTTPリクエストのすべてのデフォルトにしたい場合は

2

、あなたがそうのように、ブートストラップ呼び出しでデフォルトRequestOptionsを設定することができます。

import { RequestOptions, BaseRequestOptions } from "@angular/http"; 

... 

class AppBaseRequestOptions extends BaseRequestOptions { 
    // Overriding Accept so that Firefox will correctly get JSON 
    // responses from the server rather than XML. 
    public headers: Headers = new Headers({ 
     "Content-Type": "application/json", 
     "Accept": "application/json" 
    }); 
} 

bootstrap(AppRoot, [ ... 
    { provide: RequestOptions, useClass: AppBaseRequestOptions } 
]); 
関連する問題