/** * 在 ajax request 前修改url,增加服务端`basePath` * `basePath`在`app.json`配置 */ Ext.define('saas.override.data.Connection', { override: 'Ext.data.Connection', urlRegexp: /(http|ftp|https):\/\//, config: { /** * @cfg {Object} defaultServerHeaders * 与defaultHeaders有区别,只在调用server api的时候才添加的headers */ defaultServerHeaders: null }, privates: { parseBasePath: function(basePath) { if (Ext.isObject(basePath)) { var protocol = window.location.protocol.split(":")[0]; if (protocol === 'file') { protocol = 'https'; } return basePath[protocol]; } return basePath; }, setupServerOptions: function(options) { var serverOptions = Ext.manifest.server, originUrl = options.url; if (serverOptions && serverOptions.basePath && !this.urlRegexp.test(originUrl) && (!serverOptions.urlPattern || new RegExp(serverOptions.urlPattern).test(originUrl))) { Ext.Object.merge(options, { url: this.parseBasePath(serverOptions.basePath) + (originUrl.indexOf('/') == 0 ? '' : '/') + originUrl, headers: this.getDefaultServerHeaders() || {} }); } } }, request: function(options) { if (options && options.url) { this.setupServerOptions(options); } return this.callParent([options]); } });