Caching 如何在Sitecore中处理富文本字段中的图像标记,使其能够自动处理媒体哈希?

Caching 如何在Sitecore中处理富文本字段中的图像标记,使其能够自动处理媒体哈希?,caching,sitecore,media,rte,Caching,Sitecore,Media,Rte,我的Sitecore网站是7.5版。我已经实现了媒体保护请求功能,但我可以在Sitecore日志中看到太多错误,这些错误表示: 错误MediaRequestProtection:输入了无效/缺少的哈希值 遇到。预期哈希值:媒体URL:,引用URL: 我的问题是如何在Sitecore的富文本字段中处理图像标记,以便它能够自动处理媒体哈希?因为7.5版Sitecore引入了媒体请求保护,这是添加到资产URL的哈希。我认为这是避免任何拒绝服务攻击的一件好事 在每个传入的媒体请求上,Sitecore计算

我的Sitecore网站是7.5版。我已经实现了媒体保护请求功能,但我可以在Sitecore日志中看到太多错误,这些错误表示:

错误MediaRequestProtection:输入了无效/缺少的哈希值 遇到。预期哈希值:媒体URL:,引用URL:


我的问题是如何在Sitecore的富文本字段中处理图像标记,以便它能够自动处理媒体哈希?

因为7.5版Sitecore引入了媒体请求保护,这是添加到资产URL的哈希。我认为这是避免任何拒绝服务攻击的一件好事

在每个传入的媒体请求上,Sitecore计算请求查询字符串参数的哈希值,并将其与给定的哈希值进行比较。如果它们相等,则Sitecore将根据提供的URL参数执行所需的例程(例如,图像大小调整),但如果它们不相等,则Sitecore将抛出MediaRequestProtection错误并按原样发送原始文件

Sitecore富文本编辑器(RTE)中存在一个已知问题,即票证Id为438674且“媒体请求保护未应用于RTE内超链接中的媒体”描述。Sitecore支持可以提供一个补丁来覆盖从RTE字段呈现媒体链接的方法,从而也包括哈希值。请参阅Sitecore 8.2发行说明下的参考

如果到目前为止您还没有任何Sitecore支持覆盖范围,那么您可以实施如下解决方法:

  • 钩住
    saveRichTextContent
    管道,在保存之前更改RTE内容。对于引入
    saveRichTextContent
    管道后尚未修改的项目,您可以为富文本字段类型创建一个新的
    renderField
    管道,但我宁愿建议坚持使用
    saveRichTextContent
    pipeline方法,简单地使用包含媒体资产的RTE重新保存所有项目
  • 编写自定义代码以循环浏览RTE HTML中的图像,并相应地修改图像呈现。请注意,您需要使用
    Sitecore.Resources.Media.HashingUtils.ProtectAssetUrl()
    方法生成添加了哈希的完整URL,例如:

  • 自7.5版以来,Sitecore引入了媒体请求保护,这是添加到资产URL的哈希。我认为这是避免任何拒绝服务攻击的一件好事

    在每个传入的媒体请求上,Sitecore计算请求查询字符串参数的哈希值,并将其与给定的哈希值进行比较。如果它们相等,则Sitecore将根据提供的URL参数执行所需的例程(例如,图像大小调整),但如果它们不相等,则Sitecore将抛出MediaRequestProtection错误并按原样发送原始文件

    Sitecore富文本编辑器(RTE)中存在一个已知问题,即票证Id为438674且“媒体请求保护未应用于RTE内超链接中的媒体”描述。Sitecore支持可以提供一个补丁来覆盖从RTE字段呈现媒体链接的方法,从而也包括哈希值。请参阅Sitecore 8.2发行说明下的参考

    如果到目前为止您还没有任何Sitecore支持覆盖范围,那么您可以实施如下解决方法:

  • 钩住
    saveRichTextContent
    管道,在保存之前更改RTE内容。对于引入
    saveRichTextContent
    管道后尚未修改的项目,您可以为富文本字段类型创建一个新的
    renderField
    管道,但我宁愿建议坚持使用
    saveRichTextContent
    pipeline方法,简单地使用包含媒体资产的RTE重新保存所有项目
  • 编写自定义代码以循环浏览RTE HTML中的图像,并相应地修改图像呈现。请注意,您需要使用
    Sitecore.Resources.Media.HashingUtils.ProtectAssetUrl()
    方法生成添加了哈希的完整URL,例如:

  • 最好在…上问这个问题-最好在…上问这个问题-
    string mediaUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(yourMediaItem);
    string safeMediaUrl = Sitecore.Resources.Media.HashingUtils.ProtectAssetUrl(mediaUrl);