「MediaRequestProtection: An invalid/missing hash value was encountered」エラーのトラブルシューティング


解説

Sitecore XP 7.5 では、動的な画像スケーリング パラメータを含むメディアURLを制限し、サーバー生成のリクエストのみが処理されるようにする、メディア リクエスト保護機能が導入されました。これにより、サーバーは有効な画像スケーリング リクエストにのみリソースとディスク スペースを費やすようになります。

この記事では、「MediaRequestProtection: An invalid/missing hash value was encountered」というエラーのトラブルシューティングに役立つ様々なシナリオを紹介します。

ログに次のメッセージが出力される可能性があります。

ERROR MediaRequestProtection: An invalid/missing hash value was encountered.
The expected hash value: 7D6A9AD7AB99A899D3DB57CDA568256C.
Media URL: /-/media/images/logo.ashx?h=200&w=200,
Referring URL: https://example.com

ハッシュ値が無効または欠落している場合、Sitecoreはリクエストの正当性を検証できないため、エラーとして扱われます。その結果、Sitecoreはデフォルトのパラメータを使用してレスポンスを返し、検証されていないリクエストによってシステムが過負荷になるのを防ぎます。

シナリオ1:メディアURLに、期待されるハッシュ値と一致しないハッシュ パラメータが含まれている

問題をトラブルシューティングするには、次の手順を実行してください。

  1. 環境内のすべての Sitecore インスタンスで、以下の項目に同じ値が使用されていることを確認します。
    • Media.RequestProtection.SharedSecret 設定
    • Media.RequestProtection.HashParameterName 設定
    • protectedMediaQueryParameters の一覧
  2. ハッシュ パラメータが割り当てられた後にメディア URL が操作されないようにしてください。

シナリオ2:メディアURLにハッシュ パラメータがない(ヘッドレス レンダリングを使用しない場合)

問題をトラブルシューティングするには、次の手順を実行してください。

  1. カスタム コードを使用して URL をレンダリングする場合は、必ず HashingUtils.ProtectAssetUrl(url) を呼び出します。
  2. <renderField> パイプラインがカスタマイズされている場合は、カスタマイズによって Sitecore.Pipelines.RenderField.ProtectedImageLinkRenderer プロセッサの実行が妨げられないようにするか、このデフォルトのプロセッサを置き換えられるようにカスタマイズで同様のロジックを使用していることを確認します。

シナリオ3:メディアURLにハッシュ パラメータがない(ヘッドレス レンダリング用)

Sitecoreヘッドレス レンダリング(JSSアプリケーション)を使用する場合、エラー メッセージにはjssmediaハンドラーが含まれます。例:

Media URL: /-/jssmedia/images/logo.ashx?h=200&w=200

この問題を解決するには、要求された画像サイズがアプリケーション構成で明示的に許可されているかどうかを確認してください。こちらの例をご覧ください。