メインコンテンツへ移動

クロスオリジン リソース シェアリング(CORS)

HAPと自社開発のフロントエンドプロジェクトを組み合わせる場合、クロスドメインの課題が発生することがあります。この場合、フロントエンドはHAPシステムのAPIをデフォルトでは直接呼び出すことができません。

下記の例のように、クロスドメインリクエストを許可するためには、プロキシ層の設定ファイルでHTTPヘッダーパラメータを設定してください(プロキシ層がない場合は追加構築が必要です。詳細はプロキシ構成をご覧ください)。

以下は設定例です。

location / {

add_header Access-Control-Allow-Origin 'クロスドメインアクセスを許可するアドレス(例:https://a.domain.com、複数指定時はカンマ区切り)';
add_header Access-Control-Allow-Credentials 'true';
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'フロントエンドから送信されるHeaderパラメータに応じて調整(例:X-Requested-With, Authorization)';

if ($request_method = 'OPTIONS') {
return 204;
}
......
}

注意

インターフェース呼び出しのセキュリティを確保したい場合、上記の方法は推奨されません。

HAPでは、各アプリケーションの[API開発ドキュメント]モジュールなど、多くの標準APIを公開しています。インターフェース呼び出しにはAppKeyとSignによる認証方式が採用されています。

上記の方法でフロントエンドから直接呼び出す場合、AppKeyやSignなどの情報が公開状態となります。システムにアクセスできるすべてのユーザーはフロントエンドのコードを閲覧でき、これらのパラメータの値を利用してインターフェースを呼び出してデータを取得できてしまいます。

推奨方法は下記のとおりです。

自社開発プロジェクトのフロントエンドでは、HAPのAPIを直接呼び出すのではなく、自社開発プロジェクトのサーバー側が提供するAPI経由でアクセスします。フロントエンドはサーバー側と認証を維持し(例:ログイン認証が必要)、最終的にサーバー側からHAPのAPIと通信を行います。AppKeyやSignはすべて自社サーバー側にて設定され、フロントエンドには一切公開されません。これによりインターフェース呼び出しのセキュリティが確保されます。