アプリを配置する場合、プロキシの使用が必要になることがあります。Web AppBuilder は、以下の状況でのプロキシの使用をサポートしています。
- ドメイン間でのリソースへのアクセス
- 2048 文字を超えるリクエスト
- トークン ベース認証によってセキュリティ保護されたリソースへのアクセス
- OAuth 2.0 アプリのログイン
- ログの有効化
- リソースとリファラの両方に基づく評価制限
デフォルトでは、ダウンロードされたアプリケーションは Portal for ArcGIS が提供するプロキシを使用します。 独自のプロキシとルールを指定するには、アプリケーションの構成ファイルで httpProxy プロパティを変更します。httpProxy プロパティには、以下の属性が含まれています。
属性 | 説明 |
---|---|
useProxy | ブール値。オプション。デフォルト: true。false を指定した場合、すべてのリクエストはプロキシを使用しません。 |
url | 文字列。オプション。プロキシの場所を指定する URL。リクエストがどのプロキシ ルールにも一致しないがプロキシを使用する必要がある場合 (ドメイン間リクエストなど)、このプロキシが使用されます。 |
alwaysUseProxy | ブール値。オプション。プロキシが REST エンドポイントとの通信で常に使用されるかどうかを指定します。デフォルト: false。リクエストがどのプロキシ ルールにも一致せず、プロキシを必要としていない場合、アプリはこのプロパティをチェックしてさらにプロキシの使用方法を決定します。false を指定した場合、リクエストは url が参照するプロキシを経由しません。true を指定した場合、リクエストは url が参照するプロキシを経由します。 |
rules | オブジェクト (配列)。オプション。同じ URL 接頭辞を持つ一連のリソースのプロキシを定義します。リクエストの URL がルールに一致する場合、リクエストはプロキシを経由して送信されます。各ルールには、以下の 2 つのプロパティがあります。
|
注意:
useProxy が false で、リクエストが 2048 文字を超える場合は、GET リクエストの代わりに POST が送信されます。また、サービスが CORS をサポートする場合、POST リクエストはサービスに正常に直接送信されます。CORS をサポートしていない場合は POST リクエストは失敗します。useProxy が true で POST リクエストが送信されるが、サービスが CORS をサポートしない場合は、POST リクエストはプロキシに自動的に送信されます。
以下では、上の属性に関してプロキシがどのように動作するかを示します。
- アプリは useProxy をチェックします。
- false の場合、すべてのリクエストはプロキシを使用しません。
- true の場合、アプリは rules をチェックします。
- リクエストがプロキシ ルールに一致する場合、アプリはルールで設定された proxyUrl を使用します。
- リクエストがどのプロキシ ルールにも一致しないがプロキシを使用する必要がある場合 (ドメイン間リクエストなど)、アプリは url が参照するプロキシを使用します。
- リクエストがプロキシ ルールに一致せず、プロキシを必要としていない場合、アプリはさらに alwaysUseProxy をチェックします。
- false を指定した場合、リクエストは url が参照するプロキシを経由しません。
- true を指定した場合、リクエストは url が参照するプロキシを経由します。
例:
"httpProxy": {
"useProxy": true,
"url": "http://gallery.chn.esri.com/arcgis/sharing/proxy",
"alwaysUseProxy": false,
"rules": [{
"urlPrefix": "http://route.arcgis.com/",
"proxyUrl": "resource-proxy-1.0/DotNet/proxy.ashx"
}]
}
さらに、特定のサーバー側プラットフォーム (ASP.NET、Java/JSP、および PHP) をそれぞれ対象にする 3 つのプロキシが提供されています。使用しているプラットフォームに適したプロキシを GitHub からダウンロードして配置してください。また、「Using the proxy」およびブログ記事の「Setting up a proxy with Web AppBuilder」の例もご参照ください。