img标签的src或a标签的href不要留空!
原版的phpbb中,给每个版块设置链接图片的时候,只能手动输入图片地址,客户觉得不太方便,
另外客户要求增加一个可以分别给每个版块上传不同logo图片的功能。
所以我们打算在phpbb后台增加一个通用的上传页面,在任何需要输入图片url的文本框后加一个upload的链接,点链接弹出上传页面,上传成功返回url给原页面并自动关闭弹窗,js更新文本框和预览图。
做好后,发现一个很奇怪的问题:
在IE下,每次上传成功后,点提交按钮,却提示没有权限自动登出了。
而其他浏览器下都是正常的,多么诡异的问题!
我们开始都觉得这种引起session丢失的问题应该是后端代码的问题,一行一行代码的调试,每次都要登入登出,同事输密码都输到手抽筋了。
折腾了一下午,最后锁定问题在那个预览图的img标签。
因为以前没有设置链接图片的版块或新版块,取不到图片地址,img标签的src属性就被置空了。
按理说这样也不至于引起session的丢失啊?!
经过几次测试发现,<img src="" />,当src属性为空时,IE和其他浏览器的表现不一致:
IE会自动请求一个’./’这样的当前目录url,而其他浏览器(FF,OP,CH,SF)都会请求当前页面的url。
phpbb的后台登录后会一直在url中传递一个session值做验证,如果session值不正确就会自动登出。
所以出现了前面的问题。
今天同事搜到另一网友也遇到类似诡异问题,而且好像时间也在昨天,很巧的!
另外提一下:
<a href="">标签的href属性为空时,不同浏览器的表现也和src类似。
而<form action="">标签的action属性为空时,各浏览器(包括IE)表现几乎一致,都会提交到当前url
以后写html时要细心些。