0

当我尝试使用主干中的提取来检索“xml”响应时,会发生此错误。

我的获取代码是:

itenary.fetch({
data :{date:dayFormatToSend.toString(), advisorId:"0000222186"},
dataType:"xml",
 success:function(response){
  console.log(response);
     } 

错误

Uncaught Error: SecurityError: DOM Exception 18 backbone-min.js:13
f.extend.set backbone-min.js:13
a.success backbone-min.js:15
c.success backbone-min.js:40
fire jquery-1.8.0.js:973
self.fireWith jquery-1.8.0.js:1080
done jquery-1.8.0.js:7583
callback

仅当我将 dataType 设置为“xml”时才会发生这种情况,否则成功函数将无法成功执行。

我也可以在 chrome 浏览器检查元素窗口的网络窗口中正确看到响应。

这只发生在 chrome 中,它适用于 firefox

4

1 回答 1

0

我通过在 1.0.0 的第 345 行附近添加一个 try catch 来解决这个问题。像这样:

// For each `set` attribute, update or delete the current value.
        for (attr in attrs) {
            try {
                val = attrs[attr];
                if (!_.isEqual(current[attr], val)) changes.push(attr);
                if (!_.isEqual(prev[attr], val)) {
                    this.changed[attr] = val;
                } else {
                    delete this.changed[attr];
                }
                unset ? delete current[attr] : current[attr] = val;
            } catch (err){
                if(window.console) console.log(err);
            }
        }

问题似乎是当它遇到“cookie”属性时,它会变得疯狂并在 Chrome 中引发安全违规。尝试调用 attrs[attr] 等同于导致 Kaboom 的 document[cookie]。不确定 Chrome 中究竟违反了哪些安全策略,但 try catch 允许代码继续执行并根据需要完成请求并按预期交回 xml。

我在http://jsfiddle.net/ctoestreich/UwRDp/将其破解为 1.0.0 分钟

于 2013-06-27T16:22:50.947 回答