9b7da18879
新增 HostBridge 原生宿主契约和 H5 native_app transport 新增 Expo React Native 移动壳并收紧 WebView 外链边界 新增 Tauri 桌面壳并用 capability 收口受控命令 更新宿主壳方案、文档索引和共享记忆
28 lines
515 B
TypeScript
28 lines
515 B
TypeScript
export function shouldOpenInMobileShellWebView(
|
|
rawUrl: string,
|
|
allowedOrigin: string,
|
|
) {
|
|
if (rawUrl === 'about:blank') {
|
|
return true;
|
|
}
|
|
|
|
if (
|
|
!rawUrl.startsWith('/') &&
|
|
!rawUrl.startsWith('#') &&
|
|
!/^[a-z][a-z0-9+.-]*:/i.test(rawUrl)
|
|
) {
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
const url = new URL(rawUrl, allowedOrigin);
|
|
if (url.protocol !== 'http:' && url.protocol !== 'https:') {
|
|
return false;
|
|
}
|
|
|
|
return url.origin === allowedOrigin;
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|