HTML5   发布时间:2022-04-26  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了HTML5 push / replaceState和标记导致安全异常大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个位于普通网站子域的网站测试版,例如:
http://test.x.com而不是 http://x.com.

我使用< base> tag将所有资源请求转换回原始域:

<base href="http://x.com/" />

在我实现HTML5 push / replaceState支持之前,这种策略很有效.

现在,如果我在控制台中执行此语句:

history.pushState({},"","");

…然后我在基于WebKit的浏览器中获得一个DOMException对象:

code: 18
constructor: DOMExceptionConstructor
line: 2
message: "Security_ERR: DOM Exception 18"
name: "Security_ERR"
sourcEID: 4839191928
__proto__: DOMExceptionPrototype

…和FireFox 4中的此错误

Security error" code: "1000

如果我删除< base>标记并执行相同的语句,推送新状态,并且没有异常.

几个问题:1)这种行为是安全风险,还是一个bug?并且2)是否存在防止异常的解决方法,或者除了使用< base>之外的策略.将完全回避问题的标签

谢谢你的虑.

解决方法

这不是一个错误,你违反了 Same origin policy.“”是一个相对的URL,它将被解析为’http://x.com/’,因为你使用了< base>标签. http://x.com一个与托管页面不同的域,这就是为什么这样做会违反相同的原始策略.

在history.pushState()调用中使用指向http://test.x.com/上的资源的绝对URL应解决此问题:

history.pushState({},"http://test.x.com/");

大佬总结

以上是大佬教程为你收集整理的HTML5 push / replaceState和标记导致安全异常全部内容,希望文章能够帮你解决HTML5 push / replaceState和标记导致安全异常所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。