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

如何识别Flash和JavaScript客户端发出的请求?,javascript,http,flash,http-headers,xmlhttprequest,Javascript,Http,Flash,Http Headers,Xmlhttprequest,在服务器上,是否可以识别运行在浏览器中的Flash客户端发出的请求与常规XMLHttpRequest发出的请求 我注意到使用flash发出的请求有以下标题: X-Requested-With:ShockwaveFlash/25.0.0.127 这是一个标准头,还是不同浏览器\flash版本的行为有所不同?您可以使用HTTP头Referer检查请求是由flash还是JavaScript发出的。如果请求是由Flash发出的,那么Referer将是.swf对象的URL。因此,如果RefererURL

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

我注意到使用flash发出的请求有以下标题:

X-Requested-With:ShockwaveFlash/25.0.0.127

这是一个标准头,还是不同浏览器\flash版本的行为有所不同?

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

根据,
Referer
是一个受限制的标题,不能由最终用户定义。在JavaScript方面,除非受到JS程序员的攻击,否则很难看到其
Referer
../xxx.swf
的HTTP请求


对于
X-request-With
,它不是标准的HTTP头,因此不受信任。即使在URLRequest API中,
X-request-With
也不受限制,可以由最终用户定义,请参阅。

考虑到您可以在flash中打开原始套接字,没有人可以复制“常规”xhr的用户代理/头并通过套接字发送。那么,您将如何区分这些请求?即使存在差异,谁能保证具有不同版本的不同浏览器能够保持这种差异?XMLHttpRequests应该具有类似的头
X-request-with:XMLHttpRequest
。这些数据不可靠,因为它们可能被欺骗,但我认为Flash标头在一般客户端检测方面非常可靠。@lofihelsinki我需要能够仅区分Flash,这样听起来它可以覆盖大多数情况。@DavidHaim-我不关心使用套接字发出请求的情况。我只对使用URLRequest API发出请求的“正常”行为感兴趣。
X-request-With
不是标准的HTTP头,不可信。即使在URLRequest API中,
X-request-With
也不受限制,可由最终用户定义,请参阅