我发现了一个非常难以重现的问题,但我认为这里有人可能已经看过这个。
在正在执行的一些Javascript代码中,我有以下构造的代码(使用ExtJS)
var newObject = Ext.Object({
property: 'value',
property2: 'value',
property3: new Ext.Object2({
property1: 'value',
listProperty: [
{ name: 'foo', value: 'bar' },
{ name2: 'foo2', value: 'bar2' }
]
})
});
正在发生的事情是,当在浏览器中执行此代码时,似乎正在尝试做一些数据污染以防止JSON劫持。因此,当您执行视图源时,代码看起来像这样
var newObject = Ext.Object({
property: 'value',
property2: 'value',
property3: new Ext.Object2({
property1: 'value',
listProperty: F_O_O: while(1) {[
{ name: 'foo', value: 'bar' },
{ name2: 'foo2', value: 'bar2' }
last F_O_O; }
]
})
});
不幸的是,这是无效的JavaScript并导致运行时错误。
我和其他几个开发人员一样,对此进行了广泛的研究,我们无法明确地发现是什么使这个内联代码发生了变化。许多网络搜索都没有透露任何有关插入此代码的具体信息(Windows?IE?FF?Apache?)。我们已经看到IE8,IE9和Firefox发生了变化。这是在安装了Mason的Windows 2008 R2服务器上安装的通过Apache 2.2运行的Javascript代码。
有没有人见过这样的事情?