RESTでクロスドメイン制約を回避する方法
これは InterSystems FAQ サイトの記事です。
%CSP.REST クラスを継承する REST 用ディスパッチクラスで REST を実装している場合は、クロスドメイン制約回避用に用意されたパラメータ HandleCorsRequest を利用します。
設定方法は以下の通りです。
REST 用ディスパッチクラスをスタジオで修正する場合は、
[クラス] > [リファクタ] > [オーバーライド] を開き、[パラメータ]タブを選択 > [HandleCorsRequest] を選択後OKボタンを押下します。
以下の定義が追加されるので、1を設定します。
REST ディスパッチクラスを Atelier で修正する場合は、オーバーライドメニューの用意がないため、パラメータの定義を追加するか、%CSP.REST クラスを開き、HandleCorsRequest の定義をコピーし修正します。
パラメータ:HandleCorsRequest 他に、REST 用ディスパッチクラスに用意する URL マップ(URL に対応するメソッドのマップ定義)の Route 要素毎に Cors 属性を true に設定する方法でも回避できます。
メモ:Cors 属性はデフォルトでは false が設定されています。
{
<Routes>
<Route Url="/persons/:keyword" Method="GET" Call="REST.Person:getperson" Cors="true" />
<Route Url="/persons2/" Method="POST" Call="REST.Person:getperson2"/>
Routes>
}
設定詳細については以下ドキュメントをご参照ください。
CORS使用のためのRESTサービスの構成について【IRIS】
コードサンプルについては、関連トピックをご参照ください。