关于HTML元素的SRC属性的一个问题

首先当然是遇到问题。一套原本部署在IIS5上,运行良好的ASP应用,原封不动地部署到IIS6之后,发现有因为多次提交空表单到当前应用的缺省页面而导致的BUG。

狠狠地调查,花费了N个MD之后,终于查清楚多次提交的原因是一个类似于[<img src="" ....../>]这样的标签导致的。这还没完,为什么在IIS5下好好儿的,到了IIS6就出问题了呢?

经过进一步的调查发现,一旦页面上的HTML元素(IMG、Script等)的SRC属性等于空字符串,那么IE会向当前WEB应用的ROOT(一般都会被转发给缺省页)发送一个GET请求。而这个多余的请求不但不是我们想要的,反而可能对应用带来不好调查的麻烦,就算不会导致莫名其妙的BUG,也会增加WEB服务器的负担而影响性能。

所以,我建议我们不要在HTML上写[<img src="" ....../>]这样的欠扁的代码,如果是使用动态生成的URL,那么也要注意判断表达式产生的结果字符串是不是空字符串。其实解决办法也很简单,既然SRC不得不为空,那么干脆就不写SRC这个属性就行了,或者不输出整个IMG标签也行。

※注:一开始的调查发现貌似该请求不是被提交到ROOT,而是包含该IMG标签的HTML页所对应的ASP页,但是今天无聊时又调查了一遍发现应该是提交到ROOT比较靠谱,当然,也不排除存在被提交到“当前页”的可能,因为原系统设计得太复杂,画面之间的调用关系不容易理清,所以存在调查不足的可能,有待再次验证。但是,如果肯定是提交到ROOT的话,那么就应该跟IIS的版本没关系,如果不一定提交到ROOT的话,那么就可能跟IIS的版本有关系,但是目前已经找不到更多有效的资料了。调查过这样的问题的朋友还请不吝赐教。

※补充:以下两篇文章有参考价值。

1、http://blogs.telerik.com/VladimirEnchev/Posts/07-07-03/Unwanted_GET_requests_with_latest_IE_and_FireFox_in_case_of_empty_img_src_script_src_and_link_href.aspx?ReturnURL=%2fVladimirEnchev%2fPosts.aspx

摘要:If you create or declare img and script element with empty src attribute or link element with empty href attribute you will receive unwanted GET request with latest FireFox. The problem with img elements exist even in IE 6/ IE 7 however the request will be to the application root.

2、http://zifiglio.blogspot.com/2006/12/image-element-with-empty-string-in-src.html

摘要:when the browser meets an <img element, it will try to make a request to the server. The request is going to be for the file in the src="" attribute of your <img element. However since image extentions are not mapped to the Aspnet_isapi.dll in IIS, it will completely bypass going through your application life cycle, since its the Aspnet_isapi.dll in turn which communicates the request to the worker process (aspnet_wp.exe).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值