2017-07-03 16 views
0

私はAngular 2.0を初めて使用しています。@angular\cliを使用してサンプルアプリケーションを構築しようとしています。エラー:0:0の原因:レスポンス:0のURL:nullの角度2.0の問題

ng serve --openを使用して、localhost:4200でアプリケーションを提供します。

は今、私はexample.service.tsというサービスがあり、コードは次のようになります。

import { Injectable } from '@angular/core'; 
import { Http,Response } from '@angular/http'; 
import 'rxjs/add/operator/map'; 

@Injectable() //Decorator 

export class ExampleService { 
    private _url : string = "file:///Users/chiranjib/Documents/Angular%202%20Tutorial/ninja-app/apidata/employeedata.json"; 
    constructor(private _http : Http){} 
    getEmployees(){ 
     return this._http.get(this._url) 
      .map((response : Response) => response.json()); 
    } 
} 

employeedata.jsonは、ローカル内apidataフォルダに存在するファイルを。私component

私が行います

this._exampleService.getEmployees().subscribe((resEmployeeData) => this.employees = resEmployeeData); 

しかし、それはエラーを示しています。でも、Firefoxの

enter image description here

エラーが残っています。

行う場合は、

private _url : string = "apidata/employeedata.json"; 

エラーが表示さ:

enter image description here

エラーを解決し、私のアプリの作業を取得する方法は?

+0

最初のイメージは問題になります。通常、アプリケーションは2つの異なるドメインにあり、2つ目は見つからないため、リソースが見つかりません。 – TGarrett

+0

エラーをイメージではなく、テキストとして含めてください。 –

+0

アプリケーションフォルダにjsonファイルがありますか?アプリの構造は何ですか – Aravind

答えて

2

エラーメッセージ

のXMLHttpRequestはfile://...をロードできません。 Cross Origin Requestは、プロトコルスキームhttp、data、chrome、chrome-extension、httpsに対してのみサポートされています。

セキュリティ上の理由から、ブラウザがfile:// URLからJSONを読み込むことを拒否したことを意味します。それは理にかなっている。ウェブサイトがユーザーのハードドライブ上のファイルを読み取ることが許可されていればプライバシーの悪夢となるからだ。

具体的には、異なるoriginのURLへのリクエストは、要求されたURLのspecial permissionを必要とし、file://のURLに対して許可されていません。

この問題を解決するには、JSONをHTTP経由で使用できるようにする必要があります(理想的には、同じホストとポートから、同じ起点にあるため)。これをCLIで実現する最も簡単な方法は、src/assetsフォルダに入れて/assets/employeedata.jsonからロードすることです。

+0

この美しい説明と解決に感謝します。 – StrugglingCoder

関連する問題