跳转到主要内容

Django的子资源完整性

项目描述

Django SRI

CI PyPI PyPI - Python Version PyPI - Status PyPI - License

子资源完整性 for Django.

安装

pip install django-sri

sri添加到您的INSTALLED_APPS

使用

模板标签

注意: 默认情况下,当DEBUGTrue时,不输出完整性散列,因为静态文件在本地开发期间会发生变化。要覆盖此设置,将USE_SRI设置为True

django-sri主要是通过模板标签使用的

{% load sri %}

{% sri_static "index.js" %} <!-- Will output "<script src='/static/index.js' integrity='sha256-...'></script>" -->
{% sri_static "index.css" %} <!-- Will output "<link rel='stylesheet' href='/static/index.css' integrity='sha256-...'/>" -->

为了性能,文件的散列被缓存到Django的缓存框架中。它将尝试使用“sri”缓存,如果不存在,则回退到“default”。缓存键是文件路径的哈希值,以十六进制形式在指定算法中。缓存将保持为DEFAULT_TIMEOUT设置的时长。

算法

SRI标准支持3种算法:sha256、sha384和sha512。默认情况下,使用SHA256。要覆盖此设置,向sri模板标签(或特定的)提供额外的algorithm参数。

{% load sri %}

{% sri_static "index.js" algorithm="sha512" %} <!-- Will output "<script src='/static/index.js' integrity='sha512-...'></script>" -->

默认算法可以通过将 SRI_ALGORITHM 设置为所需的算法来更改。

附加属性

要将附加属性添加到输出标签(如 async / defer),请将这些属性作为模板标签的附加参数指定。

{% load sri %}

{% sri_static "index.js" 'defer' 'async'%}
{% sri_static "index.woff2" preload as="font" %}

仅完整性值

要仅检索完整性哈希(integrity 属性的内容),可以使用 {% sri_integrity_static %} 标签,该标签支持与其他标签相同的参数。

{% load sri %}

{% sri_integrity_static "index.js" "sha512" %} <!-- Will output "sha512-..." -->

支持的文件

对于自动标签输出,以下文件被支持

  • .js
  • .css

未知扩展名将发出一个具有 URL 作为 href 属性的 link 标签。

sri_integrity_static 不受此限制的影响。

API

from pathlib import Path
from sri import calculate_integrity, calculate_integrity_of_static, Algorithm

calculate_integrity(Path("/path/to/myfile.txt"))  # "sha256-..."
calculate_integrity_of_static("index.js")  # "sha256-..."

calculate_integrity_of_static("index.js", Algorithm.SHA512)  # "sha512-..."

“这与 whitenoise 或类似功能兼容吗?”

是的。 django-sri 以与内置 static 模板标签相同的方式输出静态文件 URL。这意味着输出正确的缓存破损 URL。

当使用清单 STATICFILES_STORAGE 时,django-sri 将自动检索已哈希和后处理的文件,而不是原始文件。

项目详情


下载文件

下载适合您平台的自定义文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分布

django-sri-0.7.0.tar.gz (6.4 kB 查看哈希)

上传时间

构建分布

django_sri-0.7.0-py3-none-any.whl (7.3 kB 查看哈希)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面