2017-08-27 29 views
2

私は現在、2人でWebアプリケーションを開発しています。私はクライアントアプリケーションを開発しており、パートナーは別のプロジェクトでバックエンドを開発しています。私のパートナーは自分のプロジェクトを私たちのドメイン(https://api.example.com)にアップロードしており、バックエンドへの呼び出しはhttpsを経由しなければならないと主張しています。https経由でlocalhostからapiを呼び出す方法

クライアントアプリケーションを開発するにあたり、私はlocalhost経由でサービスを提供します。問題はlocalhostがデフォルトでhttp経由で提供されることです。私はhttps経由でバックエンドを呼び出す方法を知らない。

私は、Angular 4 CLIでクライアントアプリケーションを開発しています。私はhttps://localhost以上の自己署名証明書で自分のアプリを提供しようとしましたが、Chromeが本物ではない証明書を検出しているので、これを行う際に恐ろしい問題が発生しています。

だから私は立ち往生しています。私たちの開発サーバーをhttpsで呼び出す最良の方法は何ですか?あるいは、私はこれをやるべき別の方法がありますか?クライアントアプリケーションを開発する目的でパートナーが別のAPIエンドポイントを利用できるようにする必要がありますか?この問題を解決するには、どのように協力すべきですか?

+0

たとえば、cURLのようなものを使用してAPIエンドポイントに接続できますか?クライアント側のコードからGETリクエストを作成する場合は、開発サーバーがhttpsでなければならない理由はわかりません。クライアント側のコードでAPIの完全なアドレスを使用すれば正常に動作します。 – Mortz

+0

サーバーはhttps経由の呼び出しのみを受け入れます。サーバー(https://api.example.com/api/auth)を呼び出すと、chromeは2つのメッセージで応答します。 1つ目は、「No 'Access-Control-Allow-Origin」ヘッダーが要求されたリソースに存在することを示すCORSエラーです。 2番目は、サーバーから無許可の401です。 パートナーがサーバー設定を変更して、サーバーがこれらの要求を受け入れる必要がありますか?セキュリティにどのような影響がありますか? –

+0

私はhttpsから私のクライアントアプリケーションを提供しているので、私はコールを通過することができる唯一の方法です。これは正しい方法ですか?その場合、ブラウザの証明書が有効であることをどのように確信しますか? –

答えて

1

いいえ、あなたの開発サーバーとしてlocalhost:4200を使用し続けることができます。サーバー側でCORSを有効にするだけで、クライアントサイドのコードにhttps://api.example.comを使用すればうまくいくはずです。私の知る限り、あなたの問題は、外部クライアントからサーバへのアクセスではなく、HTTPS

+0

はい、これが最適です。私はバックエンドの開発者と話をし、最終的にそれを可能にしました。頭痛は今取り除かれました。したがって、解決策は、バックエンドプロジェクトにCORSを許可することですが、引き続きhttps経由でAPI呼び出しを行うことができます。それは、私がhttpsを介してクライアントアプリケーションをホストする必要がないことを意味します。 –

0

であるあなたはクロームでプロジェクトを実行している場合の拡張がありは、CROSS ORIGINが許可されていることを拡張機能をダウンロードし、バックエンドのAPIを呼び出すと呼ばれます。

+0

これはハックであり、控えめにしか動作しません。これは試すのは良い選択ですが、実際にはhttpでクライアントからの呼び出しを開いたバックエンドの開発者と話をしなければなりませんでした。 * phew * –

関連する問題