采用webpack+vue+cesium,调用arcgis service出现跨域问题,解决方法如下:
1. 在webpack.dev.conf.js中启用proxy
devServer: {
clientLogLevel: 'warning',
historyApiFallback: true,
hot: true,
compress: true,
host: HOST || config.dev.host,
port: PORT || config.dev.port,
open: config.dev.autoOpenBrowser,
overlay: config.dev.errorOverlay
? { warnings: false, errors: true }
: false,
publicPath: config.dev.assetsPublicPath,
proxy: config.dev.proxyTable, // 启用proxy
quiet: true, // necessary for FriendlyErrorsPlugin
watchOptions: {
poll: config.dev.poll
}
},
2. 在config/index.js中配置代理proxyTable
proxyTable: {
'/jssl': { // 程序中的地址
target: 'http://arcgis服务器ip:6080/arcgis/rest/services',
changeOrigin: true,
secure: false,
pathRewrite: {
'^/jssl/': '/' // 把程序中的地址转换成“真实地址”+‘/jssl’后面的部分,如‘/jssl/servicename/mapservice/',被转换成'http://arcgis服务器ip:6080/arcgis/rest/services/servicename/mapservice/'
}
}