HTTP.sys barfs

我一直在网页上测试带有嵌入式Flash组件的PS3浏览器(NF),并且似乎存在一个相当严重的错误,即发出任何来自Flash的请求。 浏览器正在添加引用链接(引用者),Flash播放器也会添加重复的标头。 实际上,如果引用标头相同,但它们不相同,并且结果请求在W2k8上由http.sys停止。 这对我来说是一个主要问题,因为我有一个Flash组件需要调用Web服务才能正常工作。

是否有某种方式可以过滤或允许这些请求通过,可能会沿途删除重复的标头。

我们已经想到了一些解决方案,但是对于我们的开发和生活环境来说,这些解决方案不是最理想的,

  • 在服务器前添加代理以清理请求。
  • 在我们的负载平衡器上修复请求。 这可能适用于我们的现场环境,但不适用于开发。 同样使用负载平衡器来执行这个操作是不好的做法,我们的操作团队不会感到高兴:)
  • 通过flashvars在初始化期间将所有数据发送到Flash。 可能通过Javascript进行任何更新/回调。 这感觉很混乱,需要一个平台的重要定制代码。
  • 防止浏览器或Flash发送引用标头。 这是可以接受的,但是似乎并没有在Flash或NF上实现这一点的方法。
  • 作为参考,以下请求将重现问题(复制并粘贴到Fiddler或其他工具中,我假设您正在运行IIS7,W2K8)。 你应该得到一个400 Bad Request响应。

    GET / HTTP/1.1
    Host: localhost
    Referer: http://localhost/NetFrontBrowser/
    Referer: http://localhost/Flash/
    

    非常感谢


    来自Windows DDK的stmedit“演示了如何使用Windows过滤平台(WFP)替换传输控制协议(TCP)连接的字符串模式”。

    一点额外的hackery将它变成一个FSM,它可以转储除第一个引用链之外的所有链。


    如果我对这些1-4进行编号,我会说2对您的实况环境最有意义,而3可能是您的开发环境无法与您的实况环境相匹配时需要做的事情。 因为负载平衡器基本上是一个反向代理,所以第1号和第2号非常相似。 正如你所指出的,如果你没有等待索尼更新他们使用的浏览器和插件,那么第4号似乎是不可能的,这似乎不大可能,因为他们可能已经把它放在了第一位,对它的控制很差(有点像固件在我制作的韩国制造的电视机上制作的是Palo Alto,由于无法良好沟通,花了10个月的时间才符合GPL标准)。


    Apache有模块mod_headers。 这可以解决你的问题,但是如果你必须使用http.sys,那么我会试着找到一些等同于mod_headers的东西。 也许有人已经将mod_headers移植到http.sys?

    另外我会评估URL重写。 我知道这是关于标题而不是URL,但也许http.sys的URL重写模块(如果存在的话)知道标题。

    我认为http.sys的mod_headers或mod_rewrite等价物可以在http.sys barfs之前处理请求。

    祝你好运!

    链接地址: http://www.djcxy.com/p/43585.html

    上一篇: HTTP.sys barfs

    下一篇: excellent setjmp/longjmp tutorials