【问题标题】:Silverlight cross-scheme access to jpegs deniedSilverlight 对 jpeg 的跨方案访问被拒绝
【发布时间】:2011-05-01 01:22:36
【问题描述】:

我有一个在 https 上运行的 Silverlight4 应用程序,已部署到 Azure。一切正常,除了一个小故障。我有 jpg 缩略图和扩展名为 .gld 的相关 zip 文件形式的内容。我的应用应该显示缩略图,并允许用户下载相关的 .gld/zip 文件。

下载工作正常,但缩略图不会显示在我的 UI 中。我从 ImageFailed 处理程序中得到 AG_E_NETWORK_ERROR。我的 cdn 域的根目录中确实有一个 clientaccesspolicy.xml 文件。 Fiddler 不显示 Silverlight 访问此文件。

这是 clientaccesspolicy.xml:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from>      
        <domain uri="*"/>
        <domain uri="http://*"/
        <domain uri="https://*"/>
      </allow-from>      
      <grant-to>      
        <resource path="/" include-subpaths="true" />
      </grant-to>      
   </policy>
  </cross-domain-access>
</access-policy>

我对 Silverlight 如何访问可下载内容而不是图像文件感到困惑。如果我将缩略图部署到 azure 中的 blob 存储(在 $root 文件夹中具有相同的 clientaccesspolicy.xml 文件),该应用程序确实会拾取缩略图,但如果我可以继续我的 cdn 上已经存在的相同文件结构,那将是理想的提供者。

如果 Silverlight 应用在 http 而不是 https 中运行,一切都会完美显示。

提前感谢您的任何想法!

迈克尔·康纳

【问题讨论】:

  • 您能否添加更多关于您用于将 URI 分配给 Image 元素的机制的详细信息?你在使用数据绑定吗?它是相对 URI 还是绝对 URI?
  • 嗨 - 它是使用绝对 URI 绑定到图像类型属性​​的数据

标签: ssl silverlight-4.0 https jpeg clientaccesspolicy.xml


【解决方案1】:

您在第 7 行中缺少一个“>”。

【讨论】:

    【解决方案2】:

    检查fiddler等使用的uri,检查图片是否使用https

    【讨论】:

    • 我们无法使用 https 访问图像。这就是问题所在。我们的内容交付网络不支持它。
    【解决方案3】:

    尝试实现更多的调试输出 - 可能是这样的:

    您可以捕获错误。 BitmapImage、Image、ImageBrush、MultiScaleImage 都有一个 ImageFailed 事件。只需为其设置一个事件处理程序。

    【讨论】:

      【解决方案4】:

      或者试试这个:

      <allow-from http-request-headers="*">
      

      【讨论】:

        【解决方案5】:

        感谢所有建议 - 都尝试过了 - 遗憾的是仍然没有运气。不幸的是,位图的 ImageFailed 事件没有提供太多细节。我认为我们可能会遇到图像文件的跨方案限制。

        【讨论】:

          【解决方案6】:

          我知道这是一个非常古老的问题,但如果有人仍然陷入类似的情况 Silverlight 不允许跨方案访问。您必须在两端都有 http 或 https。来自 MSDN:URL Access Restrictions in Silverlight

          • 如果您想托管您的 Silverlight 应用程序并存储您的 图片在不同的服务器上,限制如下:你 如果您无法将图像存储在使用 HTTPS 方案的站点上 在 HTTP 站点上托管您的应用程序(跨方案)。

          • 您可以将图像存储在跨域站点上,只要
            该跨域站点的方案与
            的方案相同 托管您的应用程序的网站。

          • 在 Windows 上运行的 Silverlight 应用程序无法将图像存储在 如果应用程序已下载,则位于本地 Intranet 区域中的服务器
            从 Internet 区域(跨区域),除非目标域是
            本地主机。

          • 您可以重定向到另一个图像 URL,只要该 URL 使用
            相同的方案。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-12-26
            • 1970-01-01
            • 2016-03-02
            • 2021-04-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多