【问题标题】:Google Analytics with Silverlight HTTPS cross domain policy problems带有 Silverlight HTTPS 跨域策略问题的 Google Analytics(分析)
【发布时间】: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


【解决方案1】:

我怀疑可能有办法使这项工作发挥作用,因为我知道 google-analytics.com 正是出于这个原因非常适合跨域。

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

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

【讨论】:

    猜你喜欢
    • 2011-09-22
    • 2010-09-09
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多