首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS11 Cordova角4折SecurityError: history.replaceState()

iOS11 Cordova角4折SecurityError: history.replaceState()
EN

Stack Overflow用户
提问于 2017-12-14 02:55:46
回答 2查看 1K关注 0票数 3

我有一个用cordova包装的角形4应用程序,它在iOS11.1之前运行得非常好。

将电话升级到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被指定,否则所有的链接等将基于手机的根(而不是应用文件夹)和中断。

有人知道怎么解决这个问题吗?

( iOS11.1.1、iOS11.2有问题)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-28 23:05:58

我用HashLocationStrategy解决了这个问题。

这将通过/#/加载url,这不会触发错误。

我改变的是:

在index.html集合中,基href到#

代码语言:javascript
复制
<base href="#">

在app-routing.module.ts中添加了useHash选项

代码语言:javascript
复制
RouterModule.forRoot( routes, { useHash: true } ),

在app.module.ts中,确保RoutingModule是导入数组中的最后一个

代码语言:javascript
复制
imports: [
    ...,
    AppRoutingModule,
],
票数 4
EN

Stack Overflow用户

发布于 2018-01-04 09:01:50

如果我正确地理解了WebKit (该错误的源)的源代码,它就会发生在您拥有的文件URI上。我找到的唯一解决办法是使用本地服务器,这样它就可以从localhost:XXX运行,这就允许替换URL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47805178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档