前言
在使用ArcGIS API JavaScript时,我使用dojo/request访问ArcGIS Server服务的json时,控制台报出了以下跨域的问题:
Request header fieldX-Request-With is not allowed by Access_Control-Allow-Headers in preflight response
然后,我尝试使用ArcGIS API中的proxy
代理解决跨域问题,代理的方式并不能解决此问题。
解决方法
通过常规的Jsonp
可以解决此问题。为了更和谐在ArcGIS API代码中使用Jsonp,使用dojo方式的Jsonp来解决此问题。
原先的造成跨域问题的代码:
require([“dojo/request”],function(request){
request(url,{
handleAs:”json”,
syns:true
}).then(lang.hitch(this,function(responses){
console.log(responses);
}))
})
使用Jsonp形式的请求代码
require(["dojo/request/script"], function(script){
script.get(url, {
jsonp: "callback"
}).then(function(responses){
console.log(responses);
}, function(err){
});
});
dojo包dojo/request/script
说明:http://dojotoolkit.org/reference-guide/1.10/dojo/request/script.html