[V9.0.2 2017 年 5 月]

REST API の CORS の構成

デフォルトでは、Web ブラウザーは、スクリプトが REST APIと同じ発信元ではない場合に、 JavaScriptなどのスクリプトが REST API を呼び出すことを許可しません。 つまり、クロス・オリジン要求が有効になりません。 指定した発信元からのクロス・オリジン要求を許可するようクロス・オリジン・リソース共有 (CORS) を構成することができます。

本タスクについて

REST API には、Web ブラウザーを介して (例えば、スクリプトを介して) アクセスできます。 これらの要求は REST APIとは異なる発信元からのものであるため、Web ブラウザーはクロス・オリジン要求であるため、要求を拒否します。 ドメイン、ポート、またはスキームが同一でない場合、発信元は異なります。

例えば、http://localhost:1999/ でホストされているスクリプトがある場合、https://localhost:9443/ でホストされている Web サイトでHTTP GETを発行すると、クロス・オリジン要求を作成できます。 この要求がクロス・オリジン要求になるのは、ポート番号とスキーム (HTTP) が異なるためです。

CORS を構成し、 REST APIへのアクセスを許可するオリジンを指定することで、クロス・オリジン要求を有効にすることができます。

手順

[V9.0.4 2017 年 10 月] 以下のいずれかの方法を使用して、ホスト名を構成します。
  • IBM® MQ 9.0.4以降では、 setmqweb properties コマンドを使用します。
    • 以下のコマンドを入力し、mqRestCorsAllowedOrigins および mqRestCorsMaxAgeInSeconds 項目を表示することによって、現在の構成を表示します。

      dspmqweb properties -a

    • 以下のコマンドを入力して、 REST API へのアクセスが許可される起点を指定します。

      setmqweb properties -k mqRestCorsAllowedOrigins -v allowedOrigins

      ここで、allowedOrigins は、クロス・オリジン要求の発行を許可する発信元を指定します。 二重引用符で囲まれたアスタリスク ("*") を使用すると、すべてのクロス・オリジン要求を許可することができます。 二重引用符で囲まれたコンマ区切りリストで複数の発信元を入力することができます。 クロス・オリジン要求を許可しない場合は、allowedOrigins の値に空の引用符を入力します。

    • 以下のコマンドを入力して、Web ブラウザーが CORS プリフライト検査の結果をキャッシュできるようにする時間 (秒) を指定します。

      setmqweb properties -k mqRestCorsMaxAgeInSeconds -v time

  • IBM MQ 9.0.3 以前の場合は、 mqwebuser.xml ファイルを編集します。
    1. 特権ユーザーであることを確認します。
    2. mqwebuser.xml ファイルを開きます。
      mqwebuser.xml ファイルは、次のいずれかのディレクトリーにあります。
      • [UNIX、Linux、Windows] UNIX, Linux®, and Windowsの場合: MQ_DATA_DIRECTORY/web/installations/installationName/servers/mqweb
      • [z/OS] z/OS®の場合: WLP_user_directory/servers/mqweb

        ここで WLP_user_directory は、mqweb 定義を作成するために crtmqweb.sh スクリプトを実行した際に指定されたディレクトリーです。

    3. mqwebuser.xml ファイルで以下の行を追加またはコメント解除することによって、CORS を構成します。
      <variable name="mqRestCorsAllowedOrigins" value="https://localhost:9883"/>
      <variable name="mqRestCorsMaxAgeInSeconds" value="120"/>
      
    4. mqRestCorsAllowedOrigins 変数の値を、クロス・オリジン要求の発行を許可する発信元に変更します。 アスタリスク (*) を使用して、すべてのクロス・オリジン要求を許可するか、または、コンマ区切りリストで複数の発信元を入力することができます。
    5. mqRestCorsMaxAgeInSeconds 変数の値を、Web ブラウザーが CORS プリフライト検査の結果をキャッシュできるようにする時間 (秒) に変更します。

[V9.0.4 2017 年 10 月]以下の例は、 http://localhost:9883https://localhost:1999、および https://localhost:9663に対して使用可能なクロス・オリジン要求を示しています。 CORS プリフライト検査の結果がキャッシュされる最長期間は、90 秒に設定されます。
setmqweb -k mqRestCorsAllowedOrigins -v "http://localhost:9883,https://localhost:1999,https://localhost:9663"
setmqweb -k mqRestCorsMaxAgeInSeconds -v 90