HTML5 push / replaceState和标记导致安全异常

前端之家收集整理的这篇文章主要介绍了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)是否存在防止异常的@R_403_323@,或者除了使用< base>之外的策略.将完全回避问题的标签

谢谢你的考虑.

@R_403_323@

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

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

history.pushState({},"http://test.x.com/");
原文链接:https://www.f2er.com/html5/168491.html

猜你在找的HTML5相关文章