对于一个特殊项目,我选择编写我自己的小型Web服务器,实际上很容易使用.Net Framework(HttpListener类)。
直到昨天我开始使用Internet Explorer进行测试时,一切都运行良好。
我的服务器一直在崩溃任何ie请求!我终于设法找出了原因:即懒散的口吃! (至少ie7和ie8,我还没有尝试过其他版本)。
FireFox,Chrome和Opera都不会出现问题。
更具体地说,我在网页中使用动态javascript插件来绕过跨域调用场景中的相同源策略。该脚本生成对我的小服务器的请求。假设建立的请求是:
http://localhost:8081/myService?p1=A,p2=B,p3=C,p4=D,p5=E
使用FFox,Chrome或Opera,我的服务器确实会收到来自浏览器的单个请求:
http://localhost:8081/myService?p1=A,p2=B,p3=C,p4=D,p5=E
使用ie,我的服务器收到随机数量的部分请求,如:
http://localhost:8081/myService?p1=A,
http://localhost:8081/myService?p1=A,p2=B,
http://localhost:8081/myService?p1=A,p2=B,p3=C,
http://localhost:8081/myService?p1=A,p2=B,p3=C,p4=D,
(实际上很多因为我有20个参数左右......)
最后:
http://localhost:8081/myService?p1=A,p2=B,p3=C,p4=D,p5=E
这基本上没什么大不了的,因为我的逻辑能够处理缺乏参数的情况。问题是每个不完整的请求实际上都会关闭连接(错误1229)。那就是试图回答每个请求的服务器崩溃了。修复很容易,但我仍然不喜欢服务器充斥着那些中间“无法回答”的事实,因此没有用处。 (此外,请求有时看起来像:
http://localhost:8081/myService?p1=A,p2=B,p3=C,?p1=A,p2=B,p3=C,p4=D,p5=E
!!! )
我跟踪了javascript:生成函数只被调用一次(无论什么浏览器),所以这听起来像是一个问题。
有没有人有想法阻止这种行为?