如何指示来自 post 的安全链接
How to indicate safe links from post
我想 link 使用 post 中的 file:///path/to/file
的文件,但是 link 由于安全检查而消失了:
[my link](file:///path/to/file)
如何在 post 上允许此 link?
这种使用情况似乎没有记录在案:
使用短代码的解决方案
为了解决我 created a shortcode 命名为 file_link.html
:
的问题
<a href="file://{{ .Get 1 | safeURL }}">{{ .Get 0 }}</a>
这样我就可以在 post:
的主体上使用了
{{< file_link "this text is shown" "/path/to/file" >}}
相当于:
[this text is shown](file:///path/to/file )
解决方案 1 – 覆盖默认 link 渲染
您可以通过在 layouts/_default/_markup/render-link.html
中创建一个文件来告诉 Goldmark(渲染器)它应该如何渲染 links (see docs)。这段代码应该有所帮助,只要确保它呈现它应该呈现的所有内容(请参阅提到的文档,您可以在文件中使用哪些变量):
<!-- layouts/_default/_markup/render-link.html -->
<a href="{{ .Destination | safeURL }}">{{ .Text }}</a>
请注意,这里的魔法是由 safeURL
函数 (documentation) 引起的。如果你只想在URL以file://
开头时使用safeURL
函数,你可以这样做:
<!-- layouts/_default/_markup/render-link.html -->
{{ if hasPrefix .Destination "file://" }}
<a href="{{ .Destination | safeURL }}">{{ .Text }}</a>
{{ else }}
<a href="{{ .Destination }}">{{ .Text }}</a>
{{ end }}
解决方案 2 – 在配置中启用不安全渲染(不推荐)
您还可以通过更新配置文件(分别是 Goldmark 渲染器设置)启用所有可能不安全的 link(以及 HTML)的渲染,如下例所示。在 this part of Hugo docs.
中搜索 unsafe
字段
您不应该使用它,除非它是您唯一可以接受的解决方案。它允许渲染 URLs 像 javascript:unsafeFunction()
或 HTML 标签,这可能不是你想要允许的。
TOML 语法 (config.toml)
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
YAML 语法 (config.yml)
markup:
goldmark:
renderer:
unsafe: true
我想 link 使用 post 中的 file:///path/to/file
的文件,但是 link 由于安全检查而消失了:
[my link](file:///path/to/file)
如何在 post 上允许此 link?
这种使用情况似乎没有记录在案:
使用短代码的解决方案
为了解决我 created a shortcode 命名为 file_link.html
:
<a href="file://{{ .Get 1 | safeURL }}">{{ .Get 0 }}</a>
这样我就可以在 post:
的主体上使用了{{< file_link "this text is shown" "/path/to/file" >}}
相当于:
[this text is shown](file:///path/to/file )
解决方案 1 – 覆盖默认 link 渲染
您可以通过在 layouts/_default/_markup/render-link.html
中创建一个文件来告诉 Goldmark(渲染器)它应该如何渲染 links (see docs)。这段代码应该有所帮助,只要确保它呈现它应该呈现的所有内容(请参阅提到的文档,您可以在文件中使用哪些变量):
<!-- layouts/_default/_markup/render-link.html -->
<a href="{{ .Destination | safeURL }}">{{ .Text }}</a>
请注意,这里的魔法是由 safeURL
函数 (documentation) 引起的。如果你只想在URL以file://
开头时使用safeURL
函数,你可以这样做:
<!-- layouts/_default/_markup/render-link.html -->
{{ if hasPrefix .Destination "file://" }}
<a href="{{ .Destination | safeURL }}">{{ .Text }}</a>
{{ else }}
<a href="{{ .Destination }}">{{ .Text }}</a>
{{ end }}
解决方案 2 – 在配置中启用不安全渲染(不推荐)
您还可以通过更新配置文件(分别是 Goldmark 渲染器设置)启用所有可能不安全的 link(以及 HTML)的渲染,如下例所示。在 this part of Hugo docs.
中搜索unsafe
字段
您不应该使用它,除非它是您唯一可以接受的解决方案。它允许渲染 URLs 像 javascript:unsafeFunction()
或 HTML 标签,这可能不是你想要允许的。
TOML 语法 (config.toml)
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
YAML 语法 (config.yml)
markup:
goldmark:
renderer:
unsafe: true