mirror of https://github.com/gohugoio/hugo
42 lines
1.4 KiB
Markdown
42 lines
1.4 KiB
Markdown
---
|
|
title: resources.Fingerprint
|
|
description: Cryptographically hashes the content of the given resource.
|
|
categories: []
|
|
keywords: []
|
|
action:
|
|
aliases: [fingerprint]
|
|
related:
|
|
- functions/resources/Minify
|
|
- functions/css/Sass
|
|
- functions/css/TailwindCSS
|
|
- functions/js/Build
|
|
- functions/js/Babel
|
|
returnType: resource.Resource
|
|
signatures: ['resources.Fingerprint [ALGORITHM] RESOURCE']
|
|
---
|
|
|
|
```go-html-template
|
|
{{ with resources.Get "js/main.js" }}
|
|
{{ with . | fingerprint "sha256" }}
|
|
<script src="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous"></script>
|
|
{{ end }}
|
|
{{ end }}
|
|
```
|
|
|
|
Hugo renders this to something like:
|
|
|
|
```html
|
|
<script src="/js/main.62e...df1.js" integrity="sha256-Yuh...rfE=" crossorigin="anonymous"></script>
|
|
```
|
|
|
|
Although most commonly used with CSS and JavaScript resources, you can use the `resources.Fingerprint` function with any resource type.
|
|
|
|
The hash algorithm may be one of `md5`, `sha256` (default), `sha384`, or `sha512`.
|
|
|
|
After cryptographically hashing the resource content:
|
|
|
|
1. The values returned by the `.Permalink` and `.RelPermalink` methods include the hash sum
|
|
2. The resource's `.Data.Integrity` method returns a [Subresource Integrity] (SRI) value consisting of the name of the hash algorithm, one hyphen, and the base64-encoded hash sum
|
|
|
|
[Subresource Integrity]: https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity
|