iOS11 Cordova Angular 4 wrap breaking SecurityError: history.replaceState()
iOS11 Cordova Angular 4 wrap breaking SecurityError: history.replaceState()
我有一个用 cordova 封装的 angular 4 应用程序,它在 iOS11.1
之前运行良好
正在将 phone 升级到 iOS11。1 我现在收到错误消息
Error: Uncaught (in promise): SecurityError (DOM Exception 18): Blocked attempt to use history.replaceState() to change session history URL from file:///var/containers/Bundle/Application/CE4A6135-633D-49B9-9A1D-28CBFF5AB832/MyAppName.app/www/index.html to file:///var/containers/Bundle/Application/CE4A6135-633D-49B9-9A1D-28CBFF5AB832/MyAppName.app/www/. Paths and fragments must match for a sandboxed document. replaceState@[native code] replaceState@file:///var/containers/Bundle/Application/CE4A6135-633D-49B9-9A1D-28CBFF5AB832/Real%20Yeti.app/www/
我的基础标签如下<base href="./">
从外观上看,它在 url 上进行了字符串比较,并认为我正在尝试访问沙盒区域之外的内容,并阻止了它
但是我确实需要指定一个基本 href,否则所有链接等都将基于 phone 的根目录(而不是应用程序文件夹)并中断。
有人知道如何解决这个问题吗?
(问题存在于 iOS11.1.1,iOS11.2)
如果我正确理解 WebKit 的源代码 (source for that error),它会发生在您拥有的文件 URI 上。我发现的唯一解决方法是使用本地服务器,使其成为 localhost:XXX
中的 运行,这确实允许替换 URL
我已经使用 HashLocationStrategy 解决了这个问题。
这将通过 /#/ 加载 url 而不会触发错误。
我修改的是:
在 index.html 中将基本 href 设置为 #
<base href="#">
在 app-routing.module.ts 添加了 useHash 选项
RouterModule.forRoot( routes, { useHash: true } ),
在 app.module.ts 中确保 RoutingModule 是导入数组中的最后一个
imports: [
...,
AppRoutingModule,
],
我有一个用 cordova 封装的 angular 4 应用程序,它在 iOS11.1
之前运行良好正在将 phone 升级到 iOS11。1 我现在收到错误消息
Error: Uncaught (in promise): SecurityError (DOM Exception 18): Blocked attempt to use history.replaceState() to change session history URL from file:///var/containers/Bundle/Application/CE4A6135-633D-49B9-9A1D-28CBFF5AB832/MyAppName.app/www/index.html to file:///var/containers/Bundle/Application/CE4A6135-633D-49B9-9A1D-28CBFF5AB832/MyAppName.app/www/. Paths and fragments must match for a sandboxed document. replaceState@[native code] replaceState@file:///var/containers/Bundle/Application/CE4A6135-633D-49B9-9A1D-28CBFF5AB832/Real%20Yeti.app/www/
我的基础标签如下<base href="./">
从外观上看,它在 url 上进行了字符串比较,并认为我正在尝试访问沙盒区域之外的内容,并阻止了它
但是我确实需要指定一个基本 href,否则所有链接等都将基于 phone 的根目录(而不是应用程序文件夹)并中断。
有人知道如何解决这个问题吗?
(问题存在于 iOS11.1.1,iOS11.2)
如果我正确理解 WebKit 的源代码 (source for that error),它会发生在您拥有的文件 URI 上。我发现的唯一解决方法是使用本地服务器,使其成为 localhost:XXX
中的 运行,这确实允许替换 URL
我已经使用 HashLocationStrategy 解决了这个问题。
这将通过 /#/ 加载 url 而不会触发错误。
我修改的是:
在 index.html 中将基本 href 设置为 #
<base href="#">
在 app-routing.module.ts 添加了 useHash 选项
RouterModule.forRoot( routes, { useHash: true } ),
在 app.module.ts 中确保 RoutingModule 是导入数组中的最后一个
imports: [
...,
AppRoutingModule,
],