我是从Silverlight应用向Google Analytics发送简单消息。它们看起来像这样(数据已更改):
http://www.google-analytics.com/collect?v=1&tid=foobar&cid=foobar&t=pageview&dp=foobar&dt=foobar
非常简单的API。如果我使用HTTP它可以很好地工作。
如果我使用HTTPS,我会违反Silverlight的跨域策略。根据{{3}},google-analytics.com需要通过托管clientaccesspolicy.xml(特定于Silverlight)或crossdomain.xml(FLASH使用的原始版本)来批准跨域调用。原来他们做主持人the docs,我可以看到Silverlight下载它(通过Fiddler),但显然Silverlight不喜欢该文件的内容并且没有#&# 39; t允许对该域的HTTPS调用(System.Security.SecurityException)。
所以..至少在目前,我无法使用HTTPS从Silverlight使用Google Analytics。有谁知道解决这个问题?
注意,我不能只使用HTTP,因为这会导致IE发出"允许混合内容"提示导致我们的一些客户出现问题。我需要像我们的其他应用程序一样使用HTTPS。
编辑:好的,我采用了一种完全不同的方法,使用HtmlPage.Window.Invoke
调用3行Javascript函数来执行异步发送,而不是在Silverlight代码中使用WebClient
。像冠军一样工作。有人看到任何潜在的问题吗?
答案 0 :(得分:0)
我怀疑可能有办法让这项工作成功,因为我知道google-analytics.com
非常适合跨域友好。
如果你绝对无法让它工作,另一种选择就是代理命中。如果您这样做,则需要确保使用您发送的匹配中的ua
和uip
覆盖字段,以便它们显示在Google Analytics中,并显示IP地址和用户代理原始访问者而不是您的服务器。
以下是有关使用带有Measurement Protocol的代理服务器的更多信息: https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#using-a-proxy-server