如何识别 Flash 与 JavaScript 客户端发出的请求?

How to identify requests made by a Flash vs. JavaScript client?

在服务器上,是否可以识别浏览器中 Flash 客户端 运行 发出的请求与常规 XMLHttpRequest 发出的请求?

我注意到使用 flash 发出的请求,有这个 header:

X-Requested-With:ShockwaveFlash/25.0.0.127

这是标准 header,还是不同浏览器\flash 版本的行为不同?

您可以使用 HTTP header Referer 来检查请求是由 Flash 还是 JavaScript 发出的。如果请求是由 Flash 发出的,则 Referer 将是 .swf object 的 URL。因此,如果 Referer URL 包含 .swf 资源,则请求必须来自 Flash。

根据 ActionScript 3.0 documentReferer 是受限制的 header,最终用户无法定义。在JavaScript端,除非被JS程序员hack,否则很难看到Referer.../xxx.swf.

的HTTP请求

对于 X-Requested-With,它不是标准的 HTTP header,因此不可信。即使在URL请求API中,X-Requested-With也不受限制,可以由最终用户定义,参考doc