0

我正在从 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 的跨域策略。根据文档,google-analytics.com 需要通过托管 clientaccesspolicy.xml(Silverlight 特定)或 crossdomain.xml(FLASH 使用的原始文件)来批准跨域调用。结果他们确实托管crossdomain.xml,我可以看到 Silverlight 下载它(通过 Fiddler),但显然 Silverlight 不喜欢该文件的内容,并且不允许 HTTPS 调用该域(System.Security.SecurityException)。

所以.. 至少目前,我无法使用 Silverlight 使用 HTTPS 的 Google Analytics。有谁知道解决这个问题的方法?


请注意,我不能只使用 HTTP,因为这会导致 IE 发出“允许混合内容”提示,这会给我们的一些客户带来问题。我需要像我们应用程序的其他部分一样使用 HTTPS。


编辑:好的,我采用了完全不同的方法,使用HtmlPage.Window.Invoke调用 3 行 Javascript 函数来执行异步发送,而不是WebClient在 Silverlight 代码中使用。像冠军一样工作。有人看到任何潜在的问题吗?

4

1 回答 1

0

我怀疑可能有一种方法可以使这项工作,因为我知道google-analytics.com正是出于这个原因,它对跨域非常友好。

如果你绝对不能让它工作,另一个选择是代理点击。如果您这样做,您需要确保在您发送的点击中使用uauip覆盖字段,以便它们在 Google Analytics 中显示为原始访问者的 IP 地址和用户代理,而不是您的服务器。

以下是有关在 Measurement Protocol 中使用代理服务器的更多信息: https ://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#using-a-proxy-server

于 2016-01-15T07:22:44.653 回答