mirror of
https://github.com/django/django.git
synced 2025-06-02 18:19:11 +00:00
Fixed #29022 -- Fixed handling protocol-relative URLs in ManifestStaticFilesStorage when STATIC_URL is set to /.
This commit is contained in:
parent
ef2434f850
commit
107aa76bcf
@ -221,7 +221,7 @@ class HashedFilesMixin:
|
|||||||
url = matches["url"]
|
url = matches["url"]
|
||||||
|
|
||||||
# Ignore absolute/protocol-relative and data-uri URLs.
|
# Ignore absolute/protocol-relative and data-uri URLs.
|
||||||
if re.match(r"^[a-z]+:", url):
|
if re.match(r"^[a-z]+:", url) or url.startswith("//"):
|
||||||
return matched
|
return matched
|
||||||
|
|
||||||
# Ignore absolute URLs that don't point to a static file (dynamic
|
# Ignore absolute URLs that don't point to a static file (dynamic
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
body {
|
||||||
|
background: url("//foobar");
|
||||||
|
}
|
@ -22,7 +22,7 @@ from .settings import TEST_ROOT
|
|||||||
|
|
||||||
def hashed_file_path(test, path):
|
def hashed_file_path(test, path):
|
||||||
fullpath = test.render_template(test.static_template_snippet(path))
|
fullpath = test.render_template(test.static_template_snippet(path))
|
||||||
return fullpath.replace(settings.STATIC_URL, "")
|
return fullpath.removeprefix(settings.STATIC_URL)
|
||||||
|
|
||||||
|
|
||||||
class TestHashedFiles:
|
class TestHashedFiles:
|
||||||
@ -560,6 +560,32 @@ class TestCollectionManifestStorage(TestHashedFiles, CollectionTestCase):
|
|||||||
self.assertEqual(manifest_content, {"dummy.txt": "dummy.txt"})
|
self.assertEqual(manifest_content, {"dummy.txt": "dummy.txt"})
|
||||||
|
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
STATIC_URL="/",
|
||||||
|
STORAGES={
|
||||||
|
**settings.STORAGES,
|
||||||
|
STATICFILES_STORAGE_ALIAS: {
|
||||||
|
"BACKEND": "django.contrib.staticfiles.storage.ManifestStaticFilesStorage",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
class TestCollectionManifestStorageStaticUrlSlash(CollectionTestCase):
|
||||||
|
run_collectstatic_in_setUp = False
|
||||||
|
hashed_file_path = hashed_file_path
|
||||||
|
|
||||||
|
def test_protocol_relative_url_ignored(self):
|
||||||
|
with override_settings(
|
||||||
|
STATICFILES_DIRS=[os.path.join(TEST_ROOT, "project", "static_url_slash")],
|
||||||
|
STATICFILES_FINDERS=["django.contrib.staticfiles.finders.FileSystemFinder"],
|
||||||
|
):
|
||||||
|
self.run_collectstatic()
|
||||||
|
relpath = self.hashed_file_path("ignored.css")
|
||||||
|
self.assertEqual(relpath, "ignored.61707f5f4942.css")
|
||||||
|
with storage.staticfiles_storage.open(relpath) as relfile:
|
||||||
|
content = relfile.read()
|
||||||
|
self.assertIn(b"//foobar", content)
|
||||||
|
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(
|
||||||
STORAGES={
|
STORAGES={
|
||||||
**settings.STORAGES,
|
**settings.STORAGES,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user