如何识别 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 document,Referer
是受限制的 header,最终用户无法定义。在JavaScript端,除非被JS程序员hack,否则很难看到Referer
为.../xxx.swf
.
的HTTP请求
对于 X-Requested-With
,它不是标准的 HTTP header,因此不可信。即使在URL请求API中,X-Requested-With
也不受限制,可以由最终用户定义,参考doc。
在服务器上,是否可以识别浏览器中 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 document,Referer
是受限制的 header,最终用户无法定义。在JavaScript端,除非被JS程序员hack,否则很难看到Referer
为.../xxx.swf
.
对于 X-Requested-With
,它不是标准的 HTTP header,因此不可信。即使在URL请求API中,X-Requested-With
也不受限制,可以由最终用户定义,参考doc。