【发布时间】:2012-01-23 20:39:57
【问题描述】:
我正在使用 history.js 并尝试从 HTTP 站点推送状态更改,例如:
http://www.example.com/some/resource
...到我的安全网站(支付页面),例如:
https://www.example.com/payment/for/some/resource
...但我在 Safari 中遇到此错误:
SECURITY_ERR: DOM Exception 18: 试图突破 用户代理的安全策略。
...当试图推动状态变化时:
History.pushState(null, null, new_state_url);
// new_state_url = https://www.example.com/payment/for/some/resource
进行了一些挖掘,我发现了this SO question,这表明我正在与Same Origin Policy 发生冲突,因为我正在尝试跨协议推动状态更改。那里的建议答案(如果我理解正确的话)是显式推送完整的 URL,但我已经这样做了并且得到了同样的错误。
在上下文中,我正在构建我的网站的移动版本,并希望使用我围绕所有其他页面加载构建的相同 AJAX 加载支付页面(我已经使用 jQuery 构建了我的页面加载器$.ajax 和一些自定义动画,与您在 jQuery Mobile 中可能发现的大致相似)。
我是否可以跨 SSL 推送此状态更改?如果是这样,我该怎么做?
【问题讨论】:
标签: javascript ajax mobile same-origin-policy browser-history