我们的客户端拥有带接收终端的小型局域网,可通过Citrix XenApp流式传输Chrome网络浏览器.为什么?我不知道.这很奇怪,但是这个串联似乎破坏了他们在我们网站表单上提交的数据.一些物理上无法缓存的东西 – 在XenApp的某个地方缓存.
这对我们来说是一个非常重要的错误,因为我们管理支付处理并且正在兑现敏感的持卡人数据,这与非PCI DDS兼容!
我们告诉他们要将普通的Chrome浏览器安装到终端机器上,他们说他们做到了.但第二天 – 同样的问题发生了.然后他们说 – “哦,这又是Citrix XenApp的旧机器之一.”嗯!现在可能一周过去了,我们再次遇到同样的问题,但他们声称他们不再使用XenApp,这是一个普通的本地Chrome.
我不相信他们.但是我们怎么能证明他们错了呢?
TL; DR:是否可以检测是否:
>网站访问者使用普通的本地Chrome浏览器或
>通过Citrix XenApp流式传输的Chrome浏览器访问?
以下是我们获得的USER_AGENT示例:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/39.0.2171.99 Safari/537.36
它看起来像一个完全正常的Chrome版本.试图通过HTTP标头查看,没有什么特别的.
有没有办法确定这个,甚至理论上?
>我们的应用程序堆栈是LAMP,因此是PHP标记.
>请不要暗示这是我们的软件错误.我们有数百个客户端,数百万个交易,这种情况只发生在Citrix XenApp疯狂客户端上.
编辑:这不是重复!在这里,我说的是在浏览器中运行的网站和服务器端脚本.不是关于具有API和DLL的Windows应用程序
解决方法:
简短回答:你真的不能……对于所有意图和目的,XenApp都是远程桌面.实际上,Microsoft RDP和Citrix在某一时刻是来回授权的相同代码库.
更长的答案:当您通过XenApp启动Chrome时,Chrome实际上是在服务器上启动的.然后,通过ICA捕获,重定向并流式传输到客户端.您无法判断用户是否正在运行XenApp的标头或HTTP流量的原因是,从Chrome< - > Webserver透视图(或任何应用程序),实际上没有任何改变.唯一的delta是UI呈现的位置.
我应该提到的一件事是,如果有人在大型安装中运行XenApp,他们可能会有一些netscalers.如果是这样,那些可以进行各种奇怪的HTTP缓存,所以你可能会在错误的地方寻找你的缓存问题的解释.