2017-02-10 4 views
1

は、問題の解決や歴史を更新しましたCORSは

私のセットアップは、このようなものです:

setup

私はCORSがHTTPサーバと考えて、周りに間違った方法を理解していましたヘッダーを提供する必要があります。実際、CORSヘッダーを提供する必要がある第三者APIです。サードパーティとして

はCORSヘッダを送信しない、とfetch clientは、このようなエラーメッセージが表示されます(ブラウザの同一生成元ポリシーを回避するために)それらを期待:

は、APIがhttp://api.sl.se/api2/realtimedeparturesV4.json?key=b99d17e1714142ca90ed017aeead32fc&siteid=9001をロードすることはできません取得します。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http://localhost:9000'はアクセスできません。

は今、{mode: 'no-cors'}とフェッチクライアントにCORSをオンにする可能性がありますが、(応答はプレーンテキストでない限り)それは、JavaScriptを禁止します。

私が選んだ解決策は、サーバ側でプロキシを実装することです(単純化するために、Aureliaページと同じドメインが提供されます)。その後、サードパーティを呼び出します。サーバー側にはCORSの制限はありません。

第三者がCORSをサポートしている方が良い解決策がありますが、場合によってはこれがオプション(サードパーティ)でないこともあります。

+1

Nope。 CORSヘッダーを送信する必要のあるAPIです。 – LStarky

+1

API設定の詳細を投稿した場合、多分お手伝いできます。しかし、Aurelia-CLIにはまったく関係ありません。 – LStarky

+0

詳細が今投稿されました – specimen

答えて

1

Aurelia FetchクライアントのデフォルトはCORSなので、Aureliaアプリはサードパーティのサーバーから確実に取得できるはずです。 あなたのAPIエンドポイントは、あなたのAurelia Cliサーバーではなく、CORSが動作するために必要なプリフライトリクエストで、適切なヘッダーをブラウザー(あなたのAureliaアプリ)に返送しているとは限りません。もちろん、エンドポイントとの間で送受信するコンテンツにはどのヘッダーが依存しますか。

+0

APIエンドポイント(オープンエンドポイント)のURLを含むコードを追加しました。 CORSについて私が理解しているのは、ヘッダーを送信する最初のAureliaアプリケーション(ブラウザーに連絡できる人)にサービスを提供するサーバーだということですが、間違っていると思っています。 – specimen

関連する問題