0

对于一个特殊的项目,我选择编写自己的微型 Web 服务器,使用 .Net 框架(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

即,我的服务器会收到随机数量的部分请求,例如:

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:生成函数只被调用一次(无论是什么浏览器),所以这听起来确实像一个 ie 问题。

有没有人有想法防止这种行为发生?

4

0 回答 0