【发布时间】:2016-01-15 16:34:11
【问题描述】:
我正在从 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 的跨域策略。根据the docs,google-analytics.com 需要通过托管 clientaccesspolicy.xml(Silverlight 特定)或 crossdomain.xml(FLASH 原始使用)来批准跨域调用。结果他们做主机crossdomain.xml,我可以看到Silverlight下载它(通过Fiddler),但显然Silverlight不喜欢该文件的内容并且不允许对该域的HTTPS调用( System.Security.SecurityException)。
所以.. 至少目前,我无法通过 HTTPS 使用 Silverlight 中的 Google Analytics。有人知道这个问题的解决方法吗?
注意,我不能只使用 HTTP,因为这会导致 IE 发出“允许混合内容”提示,这会给我们的一些客户带来问题。我需要像我们应用的其他部分一样使用 HTTPS。
编辑:好的,我采用了完全不同的方法,使用 HtmlPage.Window.Invoke 调用 3 行 Javascript 函数来执行异步发送,而不是在 Silverlight 代码中使用 WebClient。像冠军一样工作。有人认为这有什么潜在的问题吗?
【问题讨论】:
-
你有没有尝试使用 https 之类的:google-analytics.com/…
-
是的。这就是我所做的。我将 URL 中的
http更改为https。如果我只是将它们复制到浏览器位置栏中,这两个 URL 都可以正常工作,但是通过 Silverlight,https会导致它进行跨域检查并且失败。
标签: silverlight google-analytics cross-domain crossdomain.xml clientaccesspolicy.xml