Skip to content

Commit d29e1a4

Browse files
authored
Merge pull request #2 from zidanDirk/master
fix: 神马接入iframe-shell,修复部分API中依赖CDN域名识别的问题
2 parents 60b365f + 2aefae3 commit d29e1a4

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

Diff for: src/loader.js

+20-7
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ function (DefaultViewer, Messenger, wrapEvent, extend) {
1212
+ '(mipcache\\.bdstatic\\.com|'
1313
+ '[^.]+\\.mipcdn.com)'
1414
);
15+
var mipHostName = 'mipcdn.com';
1516
var isHttps = function (url) {
1617
url = '' + url;
1718
if (url.indexOf('//') === 0) {
@@ -20,27 +21,37 @@ function (DefaultViewer, Messenger, wrapEvent, extend) {
2021
return (url.indexOf('https://') === 0);
2122
};
2223

23-
var isMipCachedUrl = function (url) {
24+
var isMipCachedUrl = function (url, mcReg) {
25+
if (!mcReg || !(mcReg instanceof RegExp)) {
26+
mcReg = cachePrefix;
27+
}
2428
url = '' + url; // toString
2529
return !!url.match(cachePrefix);
2630
};
27-
var getMipCachedUrl = function (url) {
31+
var getMipCachedUrl = function (url, mcReg, mcHostName) {
2832
// 不合法的 url
2933
if ((url && url.length < 4)
3034
|| !(url.indexOf('http') === 0 || url.indexOf('//') === 0)) {
3135
return url;
3236
}
37+
// 用户可配置自己的mipcdn域名
38+
if (!mcReg || !(mcReg instanceof RegExp)) {
39+
mcReg = cachePrefix;
40+
}
41+
if (!mcHostName) {
42+
mcHostName = mipHostName;
43+
}
3344
// 已经是 mip cache url 的仅去掉协议头
34-
if (isMipCachedUrl(url)) {
45+
if (isMipCachedUrl(url, mcReg)) {
3546
return url.replace(/^https?:/, '');
3647
}
37-
var prefix = '//mipcache.bdstatic.com/c/';
48+
var prefix = '';
3849
// 获取 domain
3950
var parser = document.createElement('a');
4051
parser.href = url;
4152
var hostname = '' + parser.hostname;
4253
var subDomain = hostname.replace(/-/g, '--').replace(/\./g, '-');
43-
prefix = '//' + subDomain + '.mipcdn.com/c/';
54+
prefix = '//' + subDomain + '.' + mcHostName + '/c/';
4455
if (url.indexOf('//') === 0 || url.indexOf('https') === 0) {
4556
prefix += 's/';
4657
}
@@ -79,18 +90,20 @@ function (DefaultViewer, Messenger, wrapEvent, extend) {
7990
*/
8091
getFinalUrl: function () {
8192
var url = this.config.url || '';
93+
var mcReg = this.config.mcReg || '';
94+
var mcHostName = this.config.mcHostName || '';
8295
if (!url) {
8396
return url;
8497
}
85-
if (isMipCachedUrl(url)) {
98+
if (isMipCachedUrl(url, mcReg)) {
8699
return url;
87100
}
88101
var useMipCache = this.config.useMipCache;
89102
if (!useMipCache && currentScheme === 'https:' && !isHttps(url)) {
90103
// useMipCache = true;
91104
}
92105
if (useMipCache) {
93-
return getMipCachedUrl(url);
106+
return getMipCachedUrl(url, mcReg, mcHostName);
94107
}
95108
return url;
96109
},

0 commit comments

Comments
 (0)