Arcgis Javascript API ドキュメントで提供されているサンプル REST サービスに接続しようとすると、次のエラーが表示されます。
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://bcgphp' is therefore not allowed access.
道場のドキュメントに従って、次のように道場/ストアをセットアップしました。
var jsonStore = new JsonRest({
target: "//sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/"
});
jsonStore.get(5);
また、dojo docsごとにいくつかのヘッダーを渡そうとしましたが、上記のコードと同じエラーが返されました。
var jsonStore = new JsonRest({
target: "//sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/",
headers: {'X-Requested-With': 'XMLHttpRequest'}
});
jsonStore.get(5);
Arcgis Javascript を使用してクエリを実行すると、このデモで提供されている次のコードを使用してこのリクエストを行うことができます。これにより、クロス ドメインの問題は発生しません。
var queryTask = new QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5");
var query = new Query();
query.returnGeometry = false;
query.outFields = [
"SQMI", "STATE_NAME", "STATE_FIPS", "SUB_REGION", "STATE_ABBR",
"POP2000", "POP2007", "POP00_SQMI", "POP07_SQMI", "HOUSEHOLDS",
"MALES", "FEMALES", "WHITE", "BLACK", "AMERI_ES", "ASIAN", "OTHER",
"HISPANIC", "AGE_UNDER5", "AGE_5_17", "AGE_18_21", "AGE_22_29",
"AGE_30_39", "AGE_40_49", "AGE_50_64", "AGE_65_UP"
];
queryTask.execute(query, showResults);
function showResults (results) {
console.log(results);
}
Dojo が提供するMVC 手法を使用してアプリを構築できるように、可能であれば dojo.store を使用したいと考えています。