如何在Sitecore的Rich Text字段中处理图片标签,使其可以自动处理媒体哈希?

问题描述 投票:0回答:1

我的Sitecore网站位于7.5。我已经实现了媒体保护请求功能,但在Sitecore日志中看到太多错误,说:

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

我的问题是如何处理Sitecore的Rich Text字段中的图像标签,以便它可以自动处理媒体哈希?

caching sitecore media rte
1个回答
0
投票

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

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

Sitecore Rich Text Editor(RTE)中的一个已知问题是438674 Ticket ID“媒体请求保护不适用于RTE中超链接中的媒体”说明。 Sitecore支持人员可以提供一个补丁,以覆盖用于渲染来自RTE字段的媒体链接的方法,使其也包括哈希值。请参阅Sitecore 8.2发行说明here下的参考。

如果目前尚无Sitecore支持,则可以实施以下变通方法:

  1. 保存到saveRichTextContent管道中以更改RTE内容。对于引入saveRichTextContent管道之后尚未修改的项目,您可以为Rich Text字段类型创建新的renderField管道,但我宁愿建议您坚持使用saveRichTextContent管道方法并简单地重新保存所有带有包含媒体资产的RTE的项目。
  2. 编写您的自定义代码以遍历RTE HTML中的图像,并相应地修改图像呈现。请注意,您需要使用Sitecore.Resources.Media.HashingUtils.ProtectAssetUrl()方法生成带有添加的哈希的完整URL,例如:
string mediaUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(yourMediaItem);
string safeMediaUrl = Sitecore.Resources.Media.HashingUtils.ProtectAssetUrl(mediaUrl);
© www.soinside.com 2019 - 2024. All rights reserved.