我们有一台装有 IIS 的 Windows 2008 Server。我们有一个在 IIS 上运行的 asp.net 站点。我们首先在 Default.aspx 页面上发现了这个问题,其中有一些 javascript 如下所示:
<script language="javascript" type="text/javascript">
... ...
function removeBodyListener() {
//remove the onclick event listener so that no more pages can be opened
document.body.setAttribute('onclick', '');
}
... ...
</script>
由于某种原因,它被以如下形式发送给客户:
<script language="javascript" type="text/javascript">
... ...
function removeBodyListener() {
//HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/plain; chars document.body.setAttribute('onclick', '');
}
... ...
</script>
通过从我们的 javascript 中删除注释,我们阻止了在 default.aspx 上发生替换。我们认为这样就没问题了,但现在我们发现,在某些情况下,我们对 AJAX 调用的 JSON 响应会被此 http 标头信息替换,这会破坏 JSON 并导致我们无法再正确处理数据。
奇怪的是,我们在服务器上查看网站时无法重现该问题,但从客户端电脑查看网站时却遇到了该问题。
我们尝试禁用所有防火墙和防病毒软件。我们在 IE 和 Firefox 上进行了检查,并确认浏览器中没有指定代理。不幸的是,服务器位于客户端网络上,因此我们几乎无法控制所使用的环境。有人有什么建议吗?
答案1
原来问题出在“Symmantec End Point protection”上。卸载后一切正常。我不知道为什么告诉 Symmantec 禁用其所有功能不起作用,但卸载却起作用了。我猜当你告诉 Symmantec 完全禁用它时,它根本不听你的,还是自己做事。