繁体   English   中英

'

[英]'</div' injected in Classic ASP html response, page continues to load

所以,这很奇怪。

我们有一个2008 R2 server和运行Classic ASP的 Win 7x64 dev工作站。

站点中正好位于carat position 98301 ,将</div插入到源中。 请注意,它不是完全关闭的div( </div> )标记。 只是</div

因此,由于它移动,基于修改页面的其他内容(用户权限,查询字符串值等),各种各样的事情都在中断。 但始终要精确地位于代码中的position 98301 并且始终仅在这一页上。

我以前从未见过,也不知道在哪里弄清楚它在做什么。 我们还有许多其他页面,其中包含成千上万个字符。 我们的页面也较短。 所有页面的所有IIS设置都是相同的,并包括4Mb response bufferstatic and dynamic compression启用了static and dynamic compression (我对这两种方式进行了切换,无需更改)。 我们也有3个source control branches并且这一切都发生在仅这一页上。

我们使用的是2个Win7x64 dev workstations ,1个Win2008R2 local test server和1个Win2008R2 prod server ,它们的作用完全相同。

我到处移动了一些代码,剪切了函数,在其中添加了新代码来循环Hello World ,无论我做什么,它总是只在精确的carat position 98301插入</div

我想不出其他要测试的东西。 欢迎所有建议! 谢谢!

原来,这是页面上htmlEncode()htmlDecode()的组合,并且仅在Chrome(当前为v39.x)中存在问题。 Firefox和IE运作良好。 在我们的页面上,大约有600行脚本块,并且htmlEncode()htmlDecode()接近该块的顶部。 通过将它们移动到</script>标记之前,一切正常,并且</div没有被注入。 虽然我不是该页面的作者,但我可以看到htmlEncode()htmlDecode()函数是从此处获得的: 当从输入字段读取属性时,HTML编码丢失

另外,我们同时加载了Prototype(1.7.1)和jQuery(1.11.x),并以var $j = jQuery.noConflict();加载了jQuery var $j = jQuery.noConflict(); 在原型之前。 更改return $('<div/>')....return $j('<div/>')....甚至return jQuery('<div/>')....绝对没有影响情况。

我仍然不知道为什么会这样,但是通过将函数移到script标记的底部已经解决了(现在,无论如何)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM