7

我一直在测试网页上嵌入了 Flash 组件的 PS3 浏览器 (NetFront),并且在发出来自 Flash 的任何请求的方式上似乎存在一个相当严重的错误。浏览器正在添加引荐来源网址(referer),Flash 播放器也在添加引荐来源网址,从而导致标题重复。如果referrer 标头相同,这实际上是可以的,但它们不同,因此请求被W2k8 上的http.sys 停止。这对我来说是一个主要问题,因为我有一个 Flash 组件需要调用 Web 服务才能运行。

有什么方法可以过滤或允许这些请求通过,可能会一路剥离重复的标头。

我们已经想到但在我们的开发和实际环境中不是最理想或不可能的一些解决方案是:

  • 在服务器前添加代理以清理请求。
  • 在我们的负载均衡器上修复请求。这可能适用于我们的实时环境,但不适用于开发环境。同样使用负载均衡器执行此操作是不好的做法,我们的运营团队不会高兴:)
  • 在初始化期间通过 flashvars 将所有数据发送到 Flash。可能通过 Javascript 进行任何更新/回调。这感觉很混乱,并且需要为一个平台提供大量自定义代码。
  • 阻止浏览器或 Flash 发送引用标头。这是可以接受的,但是似乎没有办法在 Flash 或 NetFront 中启用它。

作为参考,以下请求将重现该问题(复制并粘贴到 Fiddler 或其他工具中,我假设您正在运行 IIS7、W2K8)。你应该得到400 Bad Request回应。

获取/HTTP/1.1
主机:本地主机
参考:http://localhost/NetFrontBrowser/
参考:http://localhost/Flash/

非常感谢

4

4 回答 4

1

如果我将这些 1-4 编号,我会说 2 最适合您的实时环境,而 3 可能是您需要做的事情,如果您的开发环境不能与您的实时环境类似地匹配。数字 1 和 2 非常相似,因为负载均衡器基本上是反向代理。正如您所指出的,如果不等待索尼更新他们正在使用的浏览器和插件,第 4 号似乎是不可能的,这似乎不太可能,因为他们可能一开始就将其外包出去并且对它的控制很差(有点像固件我的韩国电视是在帕洛阿尔托制造的,由于沟通不畅,他们花了 10 个月才遵守 GPL)。

于 2009-11-18T18:12:11.930 回答
1

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 之前处理请求。

祝你好运!

于 2009-11-27T20:52:02.563 回答
1

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

一点额外的hackery把它变成一个FSM,它可以转储除第一个引荐来源字符串之外的所有内容。

于 2009-12-16T17:04:39.217 回答
1

如果不需要,将其添加到 HTML 将停止使用引荐来源网址。

<meta name="referrer" content="never">
于 2015-06-12T23:18:25.783 回答