HugoのGetRemoteでMediaTypeのエラーが出た件への対処

HugoではGetRemoteという関数を使ってビルド時にインターネット上のリソースを取得することができます。

本サイトでもリンクカード(ブログカード)の生成時に利用していたりします。

そんなGetRemoteですが、使っていると謎のエラーが出て困ったためその対処を書いておきます。

発生した環境

  • バージョン: v0.121.2 (extended)
  • OS: macOS

発生したエラー

ビルド時に以下のようなエラーが出ました。

error calling resources.GetRemote: failed to resolve media type for remote resource "https://example.com/"

media type が resolve できなかったということです。どういうことだ…?

原因調査

調べてみると、公式のフォーラムで質問および回答がされていました。

GetRemote関数ではセキュリティ上の観点から、事前定義されたmedia typeのみを受け付ける設計になっているようです。恐らくXSS攻撃のような意図しないスクリプトの実行などを防ぐためではないかと思います。

解決策

許可するMediaTypeを追加することで解決が可能です。この機能はv0.112.0以降で利用可能です。

私はfaviconを取得したいと思っていたため、hugo.tomlに以下の記載を追加しました。

[security.http]
mediaTypes = ['image/vnd.microsoft.icon', 'image/x-icon']

これで無事GetRemoteを実行することができました。

最終更新 2024-01-26

広告

本記事はお役に立てたでしょうか。本ブログでは匿名でのコメントや少額から(15円~)の寄付などを受け付けております。もしお役に立てたのであればご支援いただけると大変励みになります。

Built with Hugo
テーマ StackJimmy によって設計されています。