2017-02-03 10 views
1

コンテキスト:私は自分の会社の新しいプロジェクトを開始しています。私はいくつかのWeb開発を行ってから、最新のプラットフォームを使用して構築することを決めてから何年も経ちました。AureliaとバックエンドAPIの接続

現在のスタック:

  • アウレリアフロントエンド(ローカルホスト上で実行されている:9000)ExpressJS(ローカルホスト上で実行されている:8000)を使用して
  • バックエンドのREST API AWS上で稼働する
  • PostgreSQLデータベースのためのデータを提供バックエンド

質問:フロントエンドとバックエンドを正しく接続できないようです。ここで

は私のコードです:

import {inject} from "aurelia-framework"; 
import {HttpClient} from "aurelia-http-client"; 

@inject(HttpClient) 
export class Login { 

    constructor(httpClient){ 
     this.http = httpClient; 
    } 

    signIn() { 

     const url = 'http://localhost:8000/api/user/demo/test'; 

     this.http 
      .get(url) 
      .then(data => { 
       console.log("data"); 
       console.log(data); 
      }) 
      .catch(error => { 
       console.log('Error getting ' + url); 
       console.log(error); 
      }); 
    }; 

} 

これは常に「応答:によってProgressEvent」と、catchブロックで終わる私は、ブラウザでURLを入れた場合、私は適切なJSONを取得

{"status":"success","data":[],"message":"Retrieved ALL users"} 

上記のコードは、「ローカル」コンテンツ(つまり、localhost:9000)に対してのみ機能します。他の場所からコンテンツが必要になると、すぐにこのエラーが発生します。私は何が欠けていますか?

答えて

2

CORSはlocalhost:9000からlocalhost:8000にアクセスすることを許可していないと思います。これを解決するには、ExpressJSサーバーがlocalhost:9000(またはすべてのホストにワイルドカード "*"を使用)からのCORS要求を受け入れるようにする必要があります。

は、これらのリソースを調べてください:

+0

解決済み!私は最初のリンクを見て、これを私の明白なバックエンドに追加しました:app.use(function(req、res、next){ \t res.header( "Access-Control-Allow-Origin"、 "http:// localhost: 9000 "); \t res.header("アクセス制御許可ヘッダー "、" Origin、X-Requested-With、Content-Type、Accept "); \t next(); }); –

+0

素晴らしいです。喜んで私の野生の推測は正しかった。 :) – Travo

関連する問題