UiPath Orchestrator のAPIを呼び出すためにIISサーバにCORSの設定を追加する(IISでCORS対応)
CORS(Cross Origin Resource Sharing)の概要
あるWEB上のサービスが、RESTのAPIを公開しているとします。
そして自分のWEBアプリから、そのRESTサービスを呼び出したいなんてときがあります。たとえば UiPath Orchestrator APIを使ってロボット一覧を取得して、自分のWEBサイトに表示するとか、そんな場合です。
しかしながら通常WEBブラウザはセキュリティの観点から「WEBアプリ(Script)が他のサイトへHTTPアクセスするのを制限する」という動きをします。いわゆる「同一オリジンポリシー(Same Origin Policy)」にしたがって動作するわけですが、従って通常このRESTサービスの呼び出しは遮断されてしまいます。
(ちなみに「オリジン」ってのは https://www.example.com:443/api/Account/Authenticate などにおける「https://www.example.com:443 」のことです。ここが異なるWEBサイトへの、Scriptをつかったアクセスを遮断するということですね)
さて、信頼関係があるサーバ間ではこの制約をこえて通信したいわけですが、そのためにブラウザは「REST先が自分をOKって言ってくれれば、他のオリジン(Cross Origin)だけどアクセスを許可して、情報を共有しましょう(Resource Sharing)」という機構を用いて通信をおこなう事ができます。この機構が Cross Origin Resource Sharing つまりCORSです。
「IIS上で動いているUiPath Orchestrator が公開しているRESTのAPI」をWEBアプリから呼び出そうとして、CORSの制限に引っかかってしまったので、今回はIISにCORSの設定を追加してみようと思います。
やってみる
確認した環境
AWS上の Windows Server 2019 Detacenter 上のIIS
ダウンロード・インストール
IIS上で稼働するモジュールをインストールします。
https://blogs.iis.net/iisteam/introducing-iis-cors-1-0 より64Bit版のインストーラ(IISCORS_amd64.msi
)をダウンロード。
IISサーバ上でインストーラを起動します。手順は「install」をクリックするだけ。
Web.Config に設定追加
メモ帳などで C:\Program Files (x86)\UiPath\Orchestrator\Web.config
を開きます。
<system.webServer>
の項目を検索して、、、、下記を追加します。
<system.webServer>
<cors enabled="true" failUnlistedOrigins="true">
<add origin="*" >
<allowHeaders allowAllRequestedHeaders="true" />
</add>
</cors>
...
</system.webServer>
上記は 任意のサイト(*)に対して、すべてのHTTPメソッドを許可する、というとっても緩めな設定にしていますが、実際は特定のオリジンや特定のHTTPメソッドのみ許可するなど、必要最低限のモノにすべきです。ご注意ください。
この辺のConfigurationの方法は、 https://docs.microsoft.com/en-us/iis/extensions/cors-module/cors-module-configuration-reference ココに詳しく書いてありますので、熟読しましょう。
最後に、IISを再起動して、WEBアプリからリクエストしてみましょう。
詳細は割愛しますが、OPTIONSメソッド(CORSをチェックするために呼ばれたHTTPリクエスト)が正常処理され、つぎのRobots 一覧を取得するリクエストも正常終了(Response:200) していますね!
おつかれさまでしたー
関連リンク
Author And Source
この問題について(UiPath Orchestrator のAPIを呼び出すためにIISサーバにCORSの設定を追加する(IISでCORS対応)), 我々は、より多くの情報をここで見つけました https://qiita.com/masatomix/items/7b7e55cceaeeea86ca8a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .