背景
ミニアプリには、secure originsリストに含まれない特定スキーム構造のもと、SDKによってWebViewsでホスティングされているものがあります。この場合、APIコールの一部がブロックされてしまう恐れがあります。ミニアプリ環境から出されたリクエストを相手方のサーバーが認識していることが必要となるAPIコールは特にです。
推奨事項
CORSはセキュリティに密接に関わる事柄であるため、次のことが推奨されます。
オプション1:サーバーのCORSポリシーを更新する
可能な限り優先的にこのソリューションを選択してください Access-Control-Allow-Origin ヘッダーで当該ミニアプリで使用するURLを許可するよう、サーバーを更新してください。
ミニアプリは、それぞれのミニアプリIDに基づく一意のURLから実行されます。現在のところ、ミニアプリではAndroid、iOSのプラットフォームそれぞれに別のURLが使用されるため、両方のURLを許可する必要があります。ご使用のサーバーで、リクエストに記述されているOriginヘッダーを読むことができます。オリジンがいずれかのミニアプリURLと一致していれば、該当するAccess-Control-Allow-Originヘッダーを応答に付加する必要があります。それぞれのプラットフォームに返されるべきヘッダーを以下に示します
iOSプラットフォーム | Access-Control-Allow-Origin: mscheme.YOUR_MINI_APP_ID://miniapp |
---|---|
Androidプラットフォーム | Access-Control-Allow-Origin: https://mscheme.YOUR_MINI_APP_ID |
注記:ミニアプリIDはRASポータルで確認できます
オプション2:プロキシサーバーを使用する
外部APIへのアクセスが必要なミニアプリの場合は、エコシステム内のトラストゾーン/セキュアゾーンに含まれるプロキシサーバー経由でリクエストをルーティングすることも可能です。
プロキシサーバーの使用
cors node package を用いてシンプルなプロキシサーバーをベークアウトする (express-generator-typescript などのブートストラッパーやproxy-middleware) のようなパッケージを利用)方が比較的容易です。これはご使用の企業インフラに応じてクラウドプラットフォームに公開可能です。