Mixed treść
co mixed treść jest, why active mixed treść gets blocked podczas gdy passive gets warned o, i how to detect i fix insecure sub-zasoby at scale — the przeglądarka console, CSP reporting, upgrade-insecure-żądania, blok-wszystkie-mixed-treść, i how CMSes i ad tech reintroduce it.
Języki
Mixed treść jest an HTTPS strona ładowanie a sub-zasób ponad HTTP. przeglądarki' current taxonomy jest upgradable versus blockable; the older active/passive split nadal tracks że dla najbardziej types, z exceptions (CORS-enabled images, srcset/picture, i IP-host żądania są blockable, nie upgradable). Active mixed treść — scripts, stylesheets, iframes, XMLHttpRequest/fetch — jest blocked outright ponieważ a tampered script może rewrite the whole strona, so it's co actually breaks a witryna po an HTTP→HTTPS migration; fix it pierwszy. Passive mixed treść — images, audio, video — historically załadowany z a downgraded padlock i jest now increasingly auto-upgraded lub blocked too. Anchor links i other top-level HTTP navigation są nie mixed treść, i neither są insecure downloads (a powiązany, oddzielny granica). Find it w całym fetched źródło, wyrenderowany/runtime state, i rzeczywisty-użytkownik sessions: crawl the HTTPS witryna, watch the Chrome DevTools console (dokładny wording jest przeglądarka/version specific), lub collect treść-Security-polityka-raport-tylko violations; fix it by pierwszy confirming the HTTPS equivalent actually działa, then pointing każdy sub-zasób at https:// (relative/protokół-relative paths tylko po verifying ownership i base-URL behavior). The treść-Security-polityka: upgrade-insecure-żądania header rewrites in-scope http:// sub-zasób żądania — w tym cross-origin ones — to https:// przed they're sent i przed mixed-treść/CSP sprawdzenia run; it ma no HTTP fallback if the upgrade fails, it's a safety net zamiast a substitute dla cleaning the źródło, it robi nie upgrade top-level navigation to third-party origins (so it isn't a replacement dla HSTS), i setting the directive itself in raport-tylko mode jest a no-op — monitorować z a oddzielny raport-tylko polityka instead. CMS bazy danych (back up i dry-run replacements — naive ciąg znaków-zastępować może corrupt serialized data), plugins/themes, service workers/caches, i ad/analytics znaczniki są the usual re-offenders; audit at scale z a crawler i CSP reporting zamiast strona by strona.
TL;DR — Mixed treść jest gdy a secure
https://strona loads something — an image, a script, a stylesheet — ponad insecurehttp://. że mixes a secure strona z insecure pieces, który defeats the point of HTTPS. przeglądarki blok the dangerous kinds (scripts, styles, iframes) i warn o the milder kinds (images, media). It’s the najbardziej common thing że breaks a witryna right po you switch to HTTPS, i the fix jest prosty: make każdy zasób load ponadhttps://too.
co mixed treść jest
gdy you move a witryna to HTTPS, the strona itself loads securely. ale a strona jest nigdy
just the HTML — it pulls in images, scripts, stylesheets, fonts, videos, i
czasami embedded frames z other places. If dowolny of tamte pieces są nadal
requested ponad plain http://, you mieć mixed treść: a secure strona carrying
insecure cargo. Evidence for this claim Mixed content occurs when a secure page loads resources over insecure HTTP, and browsers upgrade or block mixed-content requests by resource type. Scope: MDN documents current browser categories and behavior; individual browser versions may differ at the margins. Confidence: high · Verified: MDN: Mixed content
As Google’s own explainer puts it, “A page has mixed content when its initial HTML is loaded over a secure HTTPS connection, but other resources (such as images, videos, stylesheets, and scripts) are loaded over an insecure HTTP connection.”
że matters ponieważ the insecure pieces reopen exactly the hole HTTPS zamknięty.
Anyone sitting on the network między the visitor i the serwer może read lub tamper
z tamte http:// żądania — so the padlock in the address bar jest promising więcej
security than the strona actually ma.
The two kinds, i co przeglądarki robić o them
przeglądarki don’t treat wszystkie mixed treść the same. They sort it by how much damage the insecure zasób mógł robić:
- Active mixed treść — scripts, stylesheets, i iframes. te może control the whole strona, so a tampered one mógł rewrite everything. przeglądarki blok it. ten jest co actually breaks twój layout, twój interactivity, lub a whole embedded widget po a migration.
- Passive mixed treść — images, audio, i video. te może’t take ponad the strona, so przeglądarki mieć historically załadowany them ale taken away the padlock i shown a “not fully secure” ostrzeżenie. że’s changing — modern przeglądarki increasingly upgrade lub blok te too.
One thing że jest nie mixed treść: a plain link (<a href="http://…">) to an
HTTP strona. że just navigates you somewhere; it doesn’t load an insecure piece do
twój secure strona.
How to fix it
The fix jest almost zawsze the same: make the insecure zasób load ponad HTTPS.
Change http:// to https:// in the reference, lub używać a path że doesn’t trudny-code
the protokół at wszystkie. najbardziej of the time the zasób jest już available ponad HTTPS —
someone just left an old http:// URL in a template, a plugin, lub the baza danych.
If you want a safety net dla anything you missed, you może dodawać a single wiersz of
konfiguracja — the upgrade-insecure-requests header — że tells the przeglądarka to
quietly rewrite leftover http:// zasób żądania to https:// przed it wysyła
them. It’s a great backstop, ale it’s nie a powód to skip cleaning up the rzeczywisty
źródło. Evidence for this claim The upgrade-insecure-requests CSP directive rewrites insecure URLs as secure URLs before requests are made. Scope: MDN documents the directive's rewriting behavior and limits; it does not guarantee that an HTTPS version of every resource exists. Confidence: high · Verified: MDN: CSP upgrade-insecure-requests
Want the pełny picture — the dokładny zasób listy przeglądarki blok, how to detect
mixed treść at scale z the DevTools console i CSP raporty, the
upgrade-insecure-requests i block-all-mixed-content directives, why twój CMS
zachowuje reintroducing it, i how mixed treść interacts z HSTS? Switch to the
Advanced tab.
TL;DR — Mixed treść jest an HTTPS strona ładowanie a sub-zasób ponad HTTP. The current przeglądarka/W3C taxonomy sorts ten do upgradable i blockable treść; the older active/passive split (używany below as a blast-radius framing) nadal tracks że divide dla najbardziej zasób types, z exceptions — CORS-enabled images,
srcset/picturecandidates, i IP-host żądania są blockable even though a plainimg srcjest upgradable. Active (scripts, stylesheets, iframes,XMLHttpRequest/fetch, i anything the przeglądarka executes) jest blocked — a tampered script może rewrite the strona — so it’s the launch-day regression to fix pierwszy. Passive (images, audio, video) historically załadowany z a downgraded indicator i jest now increasingly auto-upgraded lub blocked. Anchor links i other top-level HTTP navigation aren’t mixed treść; neither są insecure downloads, który są a powiązany ale oddzielny granica. Detect it w całym three warstwy — fetched źródło, wyrenderowany/runtime state, i rzeczywisty użytkownik sessions — by crawling the HTTPS witryna, reading the Chrome DevTools console (dokładny wording jest przeglądarka/version specific), lub collectingContent-Security-Policy-Report-Onlyviolations; fix it by confirming an HTTPS equivalent actually działa, then pointing każdy sub-zasób athttps://(relative/protokół-relative paths są fine once you’ve verified ownership i base-URL behavior, nie a universal domyślny).treść-Security-polityka: upgrade-insecure-żądaniarewrites in-scopehttp://sub-zasób żądania (w tym cross-origin ones) tohttps://przed they’re sent i przed mixed-treść/CSP sprawdzenia run — a net, nie a substitute dla fixing the źródło, z no HTTP fallback if the upgrade fails, i it robi nie upgrade top-level navigation to third-party origins, so it doesn’t zastępować HSTS. Putting the directive itself in raport-tylko mode jest a no-op — monitorować z a oddzielny raport-tylko polityka instead. CMS bazy danych (back up i dry-run dowolny replacement — naive ciąg znaków-zastępować może corrupt serialized data), plugins, themes, service workers/caches, i ad/analytics znaczniki są the recurring re-offenders — audit at scale, nie strona by strona.
The HTTPS hub introduces mixed treść as one of the two launch-day awaria modes of a migration (the other będąc redirects). ten jest the deep dive it points to — the dokładny zasób tiers, the detection stack, the CSP directives, i the operational powody it zachowuje coming back.
co counts as mixed treść — i co doesn’t
Mixed treść jest scoped precisely: it’s o sub-zasoby the strona loads, nie o links the strona contains. Google’s definition: “A page has mixed content when its initial HTML is loaded over a secure HTTPS connection, but other resources (such as images, videos, stylesheets, and scripts) are loaded over an insecure HTTP connection.” Evidence for this claim Mixed content occurs when a secure page loads resources over insecure HTTP, and browsers upgrade or block mixed-content requests by resource type. Scope: MDN documents current browser categories and behavior; individual browser versions may differ at the margins. Confidence: high · Verified: MDN: Mixed content
The trap że reassures people falsely jest the anchor znacznik. A <a href="http://…">
link to an HTTP strona jest nie mixed treść — it navigates to a new document; it
doesn’t load an insecure zasób do the current secure one. że’s prawdziwy of dowolny
top-level navigation to an HTTP strona, nie just anchor clicks.
It’s nadal worth sending outbound links to HTTPS destinations. poniżej the modern
przeglądarka-domyślny Referrer-Policy (strict-origin-when-cross-origin), a click z
an HTTPS strona to an HTTP destination robi drop the Referer header, który może mangle
referral analytics — ale że behavior jest polityka- i przeglądarka-dependent, nie a
universal reguła: a strona (lub an upstream proxy/CDN) że ustawia a looser
Referrer-Policy może nadal wysyłać a referrer on że downgrade. sprawdź rzeczywisty
Referrer-Policy in effect przed asserting how much referral data a given witryna
loses — ale in dowolny case, że’s a oddzielny problem z mixed treść, nie mixed
treść itself.
Active vs. passive: the distinction że ustawia twój priorities
Modern przeglądarka i W3C documentation classifies mixed treść primarily as upgradable versus blockable treść — zasób types the przeglądarka będzie silently retry ponad HTTPS versus ones it refuses outright — zamiast the older active/passive split. Active/passive jest nadal użyteczny shorthand dla why przeglądarki draw że wiersz (how much of the strona the zasób mógł compromise), i it’s how Google’s own explainer frames it, so it’s kept below as the primary triage framing — just don’t treat it as the current official taxonomy gdy you need to powód o a specific zasób type; see the exceptions po the two listy.
przeglądarki classify mixed treść by how much of the strona the insecure zasób mógł compromise. Google: “Active mixed content poses a greater threat than passive mixed content.” że single zdanie powinien drive twój triage order.
Active mixed treść interacts z — i może take ponad — the whole strona. Google describes it as “scripts, stylesheets, iframes, and any other code the browser can download and execute.” w praktyce the active lista jest:
<script src="http://…">— the worst case; an intercepted script może rewrite the entire DOM, exfiltrate form data, lub inject treść.<link rel="stylesheet" href="http://…">— CSS może hide, reposition, lub overlay anything, so it’s treated as active.<iframe src="http://…">— an embedded insecure document inside twój secure one.XMLHttpRequest/fetch()tohttp://— insecure data the strona then acts on.- Web fonts,
<object>/<embed>zasoby, i the<link>warianty że pull in executable lub layout-controlling treść.
ponieważ a tampered active zasób może rewrite the strona, “Most browsers already block this type of content by default to protect users.” że’s why active mixed treść jest co visibly breaks things po a migration — a blocked stylesheet strips twój CSS, a blocked script kills interactivity, a blocked iframe leaves a hole. Fix active pierwszy. It’s a functional bug, nie just a security nag.
Passive (display) mixed treść — Google: “including images, video, and audio” — “doesn’t interact with the rest of the page.” An intercepted image może być swapped ale może’t seize the document. So historically przeglądarki załadowany it i just downgraded the indicator: “Until recently, passive mixed content was loaded in all browsers, because blocking it would have broken many websites. This is now beginning to change.” The direction of travel w całym przeglądarki jest toward auto-upgrading passive zasoby to HTTPS gdzie possible i blocking co może’t być upgraded, so “passive = harmless” jest no longer a bezpieczny assumption to build on.
Exceptions the active/passive split doesn’t capture
The upgradable/blockable wiersz ma several exceptions że don’t postępuj zgodnie z general “images upgrade, scripts block” pattern above — te są the cases że actually trip people up w praktyce:
- CORS-enabled image żądania są force-failed, nie upgraded. An ordinary
<img src="http://…">jest upgradable, ale an image żądanie made zcrossoriginustawić jest treated differently by the mixed-treść algorithm i fails zamiast silently upgrading. srcseti<picture>candidates są blockable, nie upgradable. The same image, requested przez a responsive-image mechanism zamiast a plainsrc, falls do the blockable kategoria — don’t assume każdy image reference behaves the same way.- IP-address hosts są blocked, nie upgraded, even dla an otherwise-upgradable
zasób type. A reference like
http://203.0.113.5/logo.pngdoesn’t get the automatic-upgrade treatment a domain-hosted equivalent by. - Nested contexts i workers są in scope. Mixed-treść sprawdzenia apply inside iframes i inside service/shared workers too, nie just the top document — a worker pobieranie an insecure script jest nadal mixed treść.
- Local i loopback origins mieć ich own nuance.
localhost, loopback addresses, ifile://contexts są “potentially trustworthy origins” poniżej the spec even bez TLS, so a prosty HTTP-vs-HTTPS heuristic doesn’t map cleanly onto local development environments. - Insecure downloads są a powiązany ale oddzielny granica. A download initiated
z a secure strona ponad
http://jest a rzeczywisty risk, ale it’s governed by jego own download-security handling, nie the sub-zasób mixed-treść reguły in ten sekcja. - Top-level HTTP navigation nadal isn’t mixed treść, w tym the anchor-link case above — że’s a właściwość of navigation, nie of a załadowany sub-zasób, however wiele of te other exceptions apply.
Detecting mixed treść — the whole stack
There jest no single button, i każdy warstwa below answers a różny question — a clean wynik at one warstwa doesn’t jasny the others. Diagnose fetched źródło (co the raw HTML actually references), wyrenderowany/runtime state (co the przeglądarka żądania once it’s parsed the strona i run jego scripts), i rzeczywisty użytkownik sessions (co happens dla a visitor behind a zgoda banner, a geo-redirect, a login wall, lub a third-party znacznik że tylko fires poniżej specific conditions) osobno. warstwa te z “one page” to “whole site”:
-
The Chrome DevTools console (wyrenderowany/runtime state). Load the HTTPS strona i otwarty the console. Blocked active mixed treść logs a message along the wiersze of “Mixed Content: The page … was loaded over HTTPS, but requested an insecure … This request has been blocked; the content must be served over HTTPS.” Passive że gets załadowany logs a ostrzeżenie zamiast a blok. The Security panel (lub the problemy tab) groups it up per strona. Fast dla spot-sprawdzenia i dla confirming a specific fix — ale treat the dokładny message wording, panel layout, i even który zasób types get blocked as przeglądarka- i version-specific; ten był confirmed wobec Chrome as of 2026-07 i you powinien verify current wording on the rzeczywisty przeglądarka/version you’re diagnosing zamiast quoting it as a fixed UI ciąg znaków, i expect Firefox, Safari, i Edge to differ.
-
A witryna crawler (fetched źródło, at scale). DevTools jest per-strona; a crawl jest witryna-wide. Ahrefs witryna Audit i Screaming Frog oba flag strony że reference
http://sub-zasoby on an HTTPS witryna — the tylko realistic way to find mixed treść w całym thousands of URLs. ten jest the primary narzędzie dla an audit, ale it’s nadal reading źródło: a crawl passing clean doesn’t prove the wyrenderowany strona lub a rzeczywisty session jest clean too — record który przeglądarka/narzędzie/version produced a given wynik zamiast reporting one unqualified pass/fail. -
CSP violation reporting (rzeczywisty użytkownik sessions). You może make the przeglądarki of rzeczywisty visitors raport mixed treść back to you, który catches zasoby że tylko load on certain strony, dla certain użytkownicy, poniżej certain zgoda states, lub z third-party znaczniki you don’t control — the warstwa neither a crawl nor a single DevTools sprawdzenie może reach. web.dev: “You can use content security policy to collect reports of mixed content on your site. To enable this feature, set the
Content-Security-Policy-Report-Onlydirective by adding it as a response header for your site.” raport-tylko mode raporty violations bez enforcing the polityka, so you może mierz problem in production przed you turn on blocking. (The mechanism jest the modernreport-to/Reporting-Endpointsheader, lub the olderreport-uri. Note ten jest a różny, general-purpose raport-tylko polityka thanupgrade-insecure-requestsitself — putting że specific directive in raport-tylko mode doesn’t działać, as covered below.)
używać wszystkie three: DevTools to verify a wyrenderowany strona, a crawler to stan magazynowy fetched źródło, CSP raporty to catch the rzeczywisty-session long tail że tylko pokazuje up in the wild. One crawl passing jest dowód o the źródło, nie a guarantee że każdy zgoda state, ad-tech wariant, personalization branch, lub worker jest clean.
Fixing at the źródło
The rzeczywisty fix starts przed you touch a single reference: verify the HTTPS equivalent actually exists, presents a prawidłowy certificate, i zwroty the treść you expect — don’t assume swapping the scheme jest bezpieczny just ponieważ the domain resolves. Once że’s confirmed, każdy sub-zasób reference powinien resolve ponad HTTPS. Options below są in rough order of preference, ale każdy one nadal depends on ownership i context, nie just the ciąg znaków you type:
- Absolute HTTPS URLs — change
http://cdn.example.com/app.jstohttps://cdn.example.com/app.js. Explicit i unambiguous; the safest domyślny gdy you’re nie certain o the serving context below. - Root-relative lub relative paths — dla zasoby you own on the same witryna,
/assets/app.jsinherits the strona’s scheme automatically. Google’s HTTPS guidance: “Make sure intrasite URLs and external URLs don’t depend on a specific protocol. Use relative paths or leave out the protocol as in//example.com/something.js.” Treat ten as conditional, nie a universal recommendation: it tylko holds once you’ve confirmed you actually own the zasób (a relative path to a third-party asset doesn’t make sense), że the strona’s rzeczywisty base URL resolves the way you expect (a<base>znacznik, a proxied path, lub an embedded/AMP context może change co “relative” means), i że nothing downstream reconstructs the URL in a way że reintroduceshttp://— client-side code building a URL zwindow.locationlub a stored absolute wartość, na przykład. - protokół-relative URLs (
//example.com/something.js) nadal działać, ale they’re nie the preferred universal fix — gate them on the same ownership/base-URL sprawdzenia above, nie just habit. On an wszystkie-HTTPS web, an explicithttps://jest zwykle clearer i avoids surprises if the file jest ever opened z a non-HTTP context; reach dla protokół-relative tylko gdzie you mieć a specific powód nie to trudny-code the scheme.
At scale you almost nigdy hand-edit templates one by one — ale don’t run an
unguarded baza danych ciąg znaków-replacement wobec production either. http://yourdomain
→ https://yourdomain looks like a prosty find-i-zastępować, i dla plain-tekst
pola it często jest bezpieczny, ale CMS treść może być serialized lub structured (PHP
serialized tablice, JSON blobs, blok-editor data) gdzie a naive substring swap
corrupts the record zamiast fixing it. używać application-aware tooling że
understands the serialization format, back up the baza danych pierwszy, i
dry-run the replacement so you może sprawdzenie the affected rows przed committing.
Then fix the handful of template/config files że emit the URLs; the crawler i
CSP raporty mop up the stragglers.
upgrade-insecure-requests: the safety net (i jego limits)
The proactive backstop jest a treść-Security-polityka directive. web.dev: “The
upgrade-insecure-requests CSP directive instructs the browser to upgrade insecure
URLs before making network requests.” ustawić the header:
Content-Security-Policy: upgrade-insecure-requestsPer MDN, it “instructs user agents to treat all of a site’s insecure URLs (those served over HTTP) as though they have been replaced with secure URLs (those served over HTTPS).” Concretely, MDN says it upgrades: “requests to load resources (such as images, scripts, or fonts),” “navigation requests (such as link targets) which are same-origin with the document,” “navigation requests in nested browsing contexts, such as iframes,” i “form submissions.” Evidence for this claim The upgrade-insecure-requests CSP directive rewrites insecure URLs as secure URLs before requests are made. Scope: MDN documents the directive's rewriting behavior and limits; it does not guarantee that an HTTPS version of every resource exists. Confidence: high · Verified: MDN: CSP upgrade-insecure-requests
Two operational details matter beyond że cytat. pierwszy, the sub-zasób upgrade isn’t limited to same-origin żądania — it’s the navigation upgrade że’s same-origin-tylko per the cytat above; ordinary sub-zasób żądania get rewritten w całym origins too, so a CDN-hosted script lub a third-party font gets upgraded, nie just same-witryna assets. Second, the rewrite happens przed the przeglądarka’s mixed-treść i CSP sprawdzenia evaluate the żądanie, który jest why a zasób że by otherwise być blocked outright as mixed treść może load cleanly once it’s był upgraded — the upgrade pre-empts the blok.
Three limits you musi nie paper ponad:
- It robi nie upgrade third-party top-level navigation. MDN: “However, top-level
navigation requests whose target is a different origin will not be upgraded.”
z powodu że, it jest explicitly nie a replacement dla HSTS: “The
upgrade-insecure-requestsdirective will not ensure that users visiting your site via links on third-party sites will be upgraded to HTTPS for the top-level navigation and thus does not replace theStrict-Transport-Security(HSTS) header.” (więcej on że split below.) - It’s a net, nie a fix, i it doesn’t fall back. If the zasób genuinely
isn’t available ponad HTTPS, the upgraded żądanie just fails outright — it robi
nie fall back to the original
http://version. Cleaning the źródło jest nadal the job; the directive covers co you missed, nie co’s genuinely broken. - raport-tylko mode doesn’t perform the upgrade — it’s a no-op. Putting
upgrade-insecure-requestsinside aContent-Security-Policy-Report-Onlyheader jest ignored by the przeglądarka: nothing gets rewritten, i nothing gets reported dla it either. If you want visibility do co the upgrade by affect przed you enforce it, run a oddzielny, general-purpose raport-tylko polityka że raporty disallowedhttp://destinations (the samedefault-src https:raport-tylko approach używany dla detection above) — you może’t get że visibility by makingupgrade-insecure-requestsitself raport-tylko.
block-all-mixed-content — mostly historical
There’s a companion directive, block-all-mixed-content, który — per MDN —
“prevents loading any assets over HTTP when the page uses HTTPS,” w tym “both
blockable and upgradable mixed content,” i applies to iframes too. w praktyce it’s
był superseded. MDN marks it deprecated i “obsolete in the specification,”
noting: “Content that isn’t blocked is now always upgraded to a secure connection, so
this directive is not needed.” Reach dla upgrade-insecure-requests; treat
block-all-mixed-content as legacy you może inherit, nie something to deploy new.
If you już wysyłać upgrade-insecure-requests, block-all-mixed-content ma
nothing left to robić dla upgraded żądania — the upgrade rewrite happens pierwszy, so by
the time a blok-wszystkie sprawdzenie by run, the żądanie ma już był upgraded (lub ma
już failed). It’s nie just legacy; it’s redundant wherever UIR jest już
deployed.
Why twój CMS zachowuje reintroducing it
Mixed treść isn’t a one-time cleanup — it recurs, ponieważ several systemy quietly
re-inject http:// URLs po you think you’re done:
- The treść baza danych. In WordPress, Drupal, i najbardziej CMSes, editors paste
images i embeds z absolute
http://URLs straight do post bodies. tamte live in the baza danych, nie in a template, so a code-level fix nigdy touches them — hence the DB search-i-zastępować. - Themes i plugins. A theme lub plugin że trudny-codes an
http://asset URL (a font, a script, a background image) reintroduces mixed treść on każdy strona it renders, i a plugin update może bring it back po you’ve cleaned it. - Ad tech, analytics, i third-party znaczniki. znacznik managers, ad networks, chat
widgets, i analytics snippets load ich own sub-zasoby — i if a vendor’s
znacznik nadal calls
http://, it’s mixed treść you może’t fix in twój own codebase. ten jest exactly the long tail CSP reporting jest dla; the durable fix jest pressing the vendor to serve ponad HTTPS (lub dropping the znacznik). If a vendor ma no działający HTTPS endpoint, the durable choices są the same three: get them to fix it, zastępować the dependency, lub drop it — there isn’t a fourth option że zachowuje the insecure version running safely. - Service workers i caches. A service worker może pamięć podręczna a odpowiedź (lub the
żądanie itself) że nadal points at
http://, i it’ll zachować serving że stale reference on repeat visits even po you fix the źródło. Reproduce a suspected fix in an incognito/uncached session przed concluding it didn’t działać, i make sure a deploy że changes zasób URLs również bumps the service worker/pamięć podręczna version so stale entries get evicted zamiast replayed. - trudny-coded
http://in old treść i email/print templates że get reused.
The operational takeaway: bake detection do a recurring audit (crawler + CSP raporty), nie a launch-day checklist you run once.
How mixed treść interacts z HSTS
Mixed treść i HSTS solve adjacent ale różny problems, i conflating them jest a częsty błąd:
upgrade-insecure-requestsfixes sub-zasoby twój own secure strona żądania — it upgrades the images/scripts/iframes the strona pulls in.- HSTS (
Strict-Transport-Security) forces the top-level navigation to twój witryna onto HTTPS — even the bardzo pierwszy żądanie, przed dowolny redirect fires — i defends wobec SSL-stripping. Google frames HSTS as a way to “avoid the cost of the 301 redirect” i to “defeat attacks like SSL Stripping.”
They don’t substitute dla każdy other. As MDN spells out, upgrade-insecure-requests
“will not ensure that users visiting your site via links on third-party sites will
be upgraded to HTTPS for the top-level navigation and thus does not replace the
Strict-Transport-Security (HSTS) header.” A fully hardened setup używa oba:
upgrade-insecure-requests (lub clean źródło URLs) so the secure strona ma no insecure
cargo, i HSTS so nobody reaches the witryna ponad HTTP in the pierwszy place. i the
usual HSTS caution nadal applies — Google: “Don’t enable HSTS until you’re certain
your site operation is robust enough to avoid ever deploying HTTPS with certificate
validation errors,” i preloading jest close to a one-way door.
robi mixed treść hurt SEO directly?
Lead z the bezpośredni effects, ponieważ they’re the ones you actually control: mixed treść jest pierwszy a security i functional problem. Blocked active mixed treść breaks renderowanie i interactivity outright — a missing stylesheet lub script jest a rzeczywisty regression regardless of co a wyszukiwarka makes of it. że’s powód enough to fix it przed you think o rankings at wszystkie.
The SEO consequences są rzeczywisty ale conditional, nie bezpośredni lub guaranteed. Current
official Google guidance robi nie establish fixing mixed treść as a bezpośredni ranking
boost — the HTTPS ranking signal itself jest scheme-oparty (whether the URL starts z
https://), nie a sub-zasób cleanliness sprawdzenie, so a stray insecure image doesn’t
by itself cost you “the HTTPS signal.” ale downstream effects może nadal pokazywać up
depending on co’s actually broken: if Googlebot renders a strona whose CSS lub JS był
blocked as mixed treść, it może index a broken lub incomplete version; a downgraded
security indicator może hurt użytkownik trust, engagement, i conversions even z no
ranking change at wszystkie; i Google’s general preference dla HTTPS canonicals jest
itself conditional — nieprawidłowy certificates, insecure dependencies,
HTTPS-to-HTTP redirects, lub conflicting canonical signals elsewhere on the strona może
wszystkie change który URL gets chosen, independent of mixed treść specifically. Treat
renderowanie, indeksowanie, canonicalization, i analytics effects as things to verify on
twój own strony, nie universal outcomes to promise — i fix mixed treść dla the
security i functional powody pierwszy.
ten sits inside the broader HTTPS dla SEO topic, który covers the migration playbook, the ranking-signal weight, i HSTS in pełny; if you’re również debugging the certificate itself (chain błędy, expiry, DV/OV/EV), że’s a sibling deep dive.
AI summary
A condensed take on the Advanced version:
- Mixed treść = an HTTPS strona ładowanie a sub-zasób ponad HTTP. It’s o zasoby the strona loads, nie links it contains — an anchor to an HTTP strona (lub dowolny top-level HTTP navigation) jest nie mixed treść, i neither jest an insecure download (a powiązany ale oddzielny granica).
- Current taxonomy jest upgradable/blockable; active/passive jest the older ale nadal-
użyteczny blast-radius framing. Active (scripts, stylesheets, iframes,
XMLHttpRequest/fetch— anything the przeglądarka executes) jest blocked ponieważ a tampered script może rewrite the strona; it’s the launch-day regression, fix it pierwszy. Passive (images, audio, video) historically załadowany z a downgraded padlock i jest now increasingly auto-upgraded lub blocked. Exceptions to the general pattern: CORS-enabled image żądania są force-failed zamiast upgraded,srcset/<picture>candidates są blockable (nie upgradable) like plainimg srcjest, IP-address hosts są blocked zamiast upgraded, i nested contexts/workers i local/loopback origins mieć ich own nuances. - Detect w całym three warstwy, nie one: fetched źródło (a crawler like Ahrefs
witryna Audit lub Screaming Frog, witryna-wide), wyrenderowany/runtime state (the Chrome
DevTools console/Security panel, per-strona — dokładny wording jest przeglądarka/version
specific, confirmed wobec Chrome as of 2026-07), i rzeczywisty użytkownik sessions
(
Content-Security-Policy-Report-Onlyviolation raporty, the production long tail w tym third-party znaczniki i zgoda-gated zasoby). A clean wynik at one warstwa doesn’t jasny the others. - Fix at the źródło, po verifying the HTTPS equivalent actually działa: point
każdy sub-zasób at
https://; relative/protokół-relative paths są fine tylko once you’ve verified ownership i the strona’s rzeczywisty base-URL behavior, nie a domyślny. At scale, back up the baza danych i dry-run dowolny replacement — naive ciąg znaków-zastępować może corrupt serialized/structured CMS data — then fix the remaining template/config files. Watch dla service workers/caches replaying stalehttp://references po the źródło jest fixed. upgrade-insecure-requests(a CSP header) rewrites in-scopehttp://sub-zasób żądania — w tym cross-origin ones — tohttps://przed they’re sent i przed mixed-treść/CSP sprawdzenia run, a safety net z no HTTP fallback if the upgrade fails. It robi nie upgrade top-level navigation to third-party origins, so it jest nie a replacement dla HSTS, i putting the directive itself in raport-tylko mode jest a no-op — monitorować z a oddzielny raport-tylko polityka instead.block-all-mixed-contentjest deprecated/obsolete, i redundant onceupgrade-insecure-requestsjest deployed (the upgrade runs pierwszy, so blok-wszystkie ma nothing left to blok).- It recurs ponieważ the CMS baza danych, themes/plugins, service workers/caches, i
ad/analytics znaczniki zachować reintroducing
http://URLs — audit on a schedule, nie once. - SEO impact jest conditional, nie bezpośredni: current Google guidance doesn’t establish a bezpośredni ranking boost z fixing mixed treść, i the HTTPS signal jest scheme-oparty. ale blocked active zasoby może make Googlebot render/index a broken strona, the padlock downgrade costs trust, i Google’s HTTPS-canonical preference jest itself conditional on things like certificate validity i conflicting signals — nie a guarantee tied to mixed treść specifically.
Official documentation
Primary-źródło documentation z Google i the przeglądarka/standardy zespoły.
Google / web.dev
- co jest mixed treść? — the definition, i the active vs. passive split z przeglądarka behavior.
- Fixing mixed treść — finding it, fixing sub-zasób URLs,
upgrade-insecure-requests, i CSP reporting. - Enable HTTPS on twój serwery — relative/protokół-relative URLs, the HTTP
<iframe>note, i HSTS guidance. - Preventing mixed treść jest one part of Google’s HTTPS guidance — the surrounding witryna-move/migration playbook mixed treść fixes sit inside.
MDN / standardy
- CSP:
upgrade-insecure-requests— co it upgrades, co it doesn’t, i why it doesn’t zastępować HSTS. - CSP:
block-all-mixed-content— the deprecated/obsolete blocking directive. - MDN — Mixed treść — the przeglądarka-behavior reference dla blockable vs. upgradable treść.
- treść Security polityka (CSP) — the header te directives live in, w tym reporting.
cytaty z the źródło
On-the-record definitions z Google’s web.dev i the MDN standardy docs. każdy link jest a deep link że jumps to the quoted passage gdzie the platforma obsługuje it.
Google / web.dev — co mixed treść jest
- “A page has mixed content when its initial HTML is loaded over a secure HTTPS connection, but other resources (such as images, videos, stylesheets, and scripts) are loaded over an insecure HTTP connection.” źródło
- “Active mixed content poses a greater threat than passive mixed content.” źródło
- Active mixed treść “includes scripts, stylesheets, iframes, and any other code the browser can download and execute,” i “Most browsers already block this type of content by default to protect users.” źródło
- Passive mixed treść, “including images, video, and audio,” “doesn’t interact with the rest of the page.” i: “Until recently, passive mixed content was loaded in all browsers, because blocking it would have broken many websites. This is now beginning to change.” źródło
Google / web.dev — detecting i fixing
- “You can use content security policy to collect reports of mixed content on your site. To enable this feature, set the
Content-Security-Policy-Report-Onlydirective by adding it as a response header for your site.” źródło - “The
upgrade-insecure-requestsCSP directive instructs the browser to upgrade insecure URLs before making network requests.” źródło - “Make sure intrasite URLs and external URLs don’t depend on a specific protocol. Use relative paths or leave out the protocol as in
//example.com/something.js.” źródło
MDN — upgrade-insecure-requests i jego limits
- “The HTTP Content-Security-Policy (CSP)
upgrade-insecure-requestsdirective instructs user agents to treat all of a site’s insecure URLs (those served over HTTP) as though they have been replaced with secure URLs (those served over HTTPS).” źródło - “However, top-level navigation requests whose target is a different origin will not be upgraded.” źródło
- “The
upgrade-insecure-requestsdirective will not ensure that users visiting your site via links on third-party sites will be upgraded to HTTPS for the top-level navigation and thus does not replace theStrict-Transport-Security(HSTS) header.” źródło
MDN — block-all-mixed-content jest legacy
- “The HTTP Content-Security-Policy (CSP)
block-all-mixed-contentdirective prevents loading any assets over HTTP when the page uses HTTPS.” ale it jest marked deprecated i “obsolete in the specification,” ponieważ “Content that isn’t blocked is now always upgraded to a secure connection, so this directive is not needed.” źródło
Mixed-treść checklist
Run ten podczas i po an HTTP→HTTPS migration, then on a recurring basis:
Find it
- załadowany key templates (home, produkt, artykuł, realizacja zakupu) ponad HTTPS z the Chrome DevTools console otwarty i noted każdy “Mixed Content” message.
- Ran a pełny crawl (Ahrefs witryna Audit lub Screaming Frog) i pulled the lista
of strony referencing
http://sub-zasoby. - ustawić
Content-Security-Policy-Report-Onlyz a reporting endpoint to catch the production long tail (per-użytkownik, per-strona, i third-party znaczniki).
Fix it (active pierwszy)
- wszystkie active references fixed:
<script>,<link rel="stylesheet">,<iframe>,fetch/XMLHttpRequest, fonts — te są blocked, so they break the strona. - wszystkie passive references fixed:
<img>,<audio>,<video>, i ich<source>/poster URLs. - CMS baza danych replacement (
http://yourdomain→https://yourdomain) dla pasted treść — backed up, dry-run z application-aware tooling, nie a raw ciąg znaków-zastępować wobec serialized/structured pola. - Theme/plugin trudny-coded
http://asset URLs found i patched. - Service worker/pamięć podręczna entries reproduced in an uncached session, i the
pamięć podręczna/service-worker version bumped so stale
http://references don’t replay. - Third-party znaczniki (ads, analytics, chat, embeds) confirmed to load ponad HTTPS — lub the vendor pushed / the znacznik dropped.
Backstop i verify
-
Content-Security-Policy: upgrade-insecure-requestsheader ustawić as a safety net (understanding it robi nie zastępować HSTS). - Re-crawled i re-checked the console — zero blocked active zasoby, clean padlock on the checked strony.
- Mixed-treść detection added to the recurring audit, nie just the launch checklist (plugin updates i new treść reintroduce it).
który fix robi ten mixed-treść case need?
działać down z the symptom.
jest the insecure thing a zasób the strona loads, lub a link the strona contains?
- A link (
<a href="http://…">) → nie mixed treść. Leave it (optionally point it at HTTPS dla referral-data cleanliness). Stop here. - A załadowany zasób (script, style, iframe, image, font, media,
fetch) → zachować going.
jest the zasób available ponad HTTPS?
- Yes, i you’ve verified it (prawidłowy cert, zwroty the intended treść) →
change the reference to
https://(the bezpieczny domyślny), lub a relative / protokół-relative path tylko if you own the zasób i mieć checked the strona’s base-URL behavior. ten jest the rzeczywisty fix. Done. - No / unsure → jest it pierwszy-party (twój own asset)?
- pierwszy-party → serve it ponad HTTPS (it’s twój serwer; you może). Then fix the reference as above.
- Third-party (a vendor znacznik, ad, embed) → ask the vendor dla an HTTPS endpoint;
if they don’t mieć one, zastępować lub drop the znacznik.
upgrade-insecure-requestsbędzie try to upgrade it, ale if the vendor ma no HTTPS version the upgraded żądanie just fails.
jest it active lub passive?
- Active (script / stylesheet / iframe /
fetch/ font) → highest priority — it’s blocked, so the strona jest functionally broken until you fix it. - Passive (image / audio / video) → fix it too, ale it’s lower urgency (padlock downgrade / possible future blok, nie an immediate break).
robić you want a safety net dla whatever you missed?
- ustawić
Content-Security-Policy: upgrade-insecure-requests. Remember: net, nie substitute — i it doesn’t cover third-party top-level navigation, so it jest nie a stand-in dla HSTS.
robić you również need to force the top-level strona onto HTTPS dla pierwszy-time / third-party referrals?
- że’s HSTS, a oddzielny control. dodawać
Strict-Transport-Security— ale tylko once twój certificate operation jest rock-solid, ponieważ HSTS (especially preload) jest close to a one-way door.
The mental modele
1. zasoby, nie links. Mixed treść jest o co the secure strona loads, nigdy o gdzie it links. If you może’t decide whether something counts, ask: robi the przeglądarka fetch ten to build the current strona? Yes → possible mixed treść. It just takes me to another strona → nie mixed treść.
2. Triage by co the przeglądarka robi, nie by severity in the abstract. Active (scripts, styles, iframes) jest blocked → it’s a functional bug, fix pierwszy. Passive (images, media) jest warned/upgraded → fix następny. The przeglądarka’s own behavior jest twój priority queue.
3. Detection jest a funnel: verify → stan magazynowy → catch the tail. DevTools console (one strona, dokładny), crawler (whole witryna, the bulk), CSP raporty (production, third-party, per-użytkownik long tail). No single narzędzie sees wszystkie three.
4. Fix the źródło; net the rest.
Clean the rzeczywisty URLs — DB, templates, znaczniki. Then dodawać
upgrade-insecure-requests as a backstop dla co slips przez. The directive jest
insurance, nie a repair.
5. Two różny “force HTTPS” jobs, two różny narzędzia.
upgrade-insecure-requests upgrades the sub-zasoby twój secure strona żądania.
HSTS forces the top-level navigation to twój witryna onto HTTPS. They don’t
overlap i one nigdy replaces the other — a hardened witryna używa oba.
6. It’s a recurring audit, nie a one-time task.
The CMS baza danych, plugin/theme updates, i third-party znaczniki zachować reintroducing
http://. Treat detection as a scheduled sweep, lub it silently comes back.
Mixed-treść anti-patterns
Mistakes że leave insecure treść live — lub paper ponad it zamiast fixing it.
- Treating
upgrade-insecure-requestsas the fix. It’s a net. If the zasób ma no HTTPS version the upgraded żądanie fails, i you’ve hidden a broken dependency zamiast resolving it. Clean the źródło URLs; użyj directive dla the tail. - Assuming a code deploy cleaned the baza danych. In a CMS, najbardziej
http://image i embed URLs live in treść rows, nie templates. A template fix leaves każdy old post mixed. Run the DB search-i-zastępować. - Deprioritizing active mixed treść ponieważ “it’s just a warning.” It isn’t — active jest blocked. A blocked stylesheet lub script jest a functional outage, nie a cosmetic nag.
- Spot-checking the homepage i calling it done. Mixed treść hides on produkt strony, old blog posts, i paths tylko niektóre użytkownicy hit. Crawl the whole witryna i używać CSP reporting dla co the crawl może’t reach.
- Ignoring third-party znaczniki. An ad, analytics, lub chat vendor nadal calling
http://jest mixed treść you może’t fix in twój own repo. Chasing it in twój codebase forever jest wasted effort — push the vendor lub drop the znacznik. - używając
block-all-mixed-contenton a new build. It’s deprecated i obsolete. Reach dlaupgrade-insecure-requestsinstead. - Confusing
upgrade-insecure-requestsz HSTS. One upgrades sub-zasoby; the other forces top-level HTTPS i defends wobec SSL stripping. wysyłka one i assuming you’ve covered the other leaves a rzeczywisty gap. - Leaving detection out of the recurring audit. Fixing it once i nigdy checking
again guarantees a plugin update lub a pasted
http://image brings it back unnoticed.
Mixed treść — cheat sheet
Active vs. passive
| Type | przykład zasoby | przeglądarka behavior | Priority |
|---|---|---|---|
| Active | <script>, <link rel="stylesheet">, <iframe>, fetch/XMLHttpRequest, fonts, <object> | Blocked — breaks the strona | Fix pierwszy |
| Passive | <img>, <audio>, <video> i ich źródła | Warns / downgrades padlock; increasingly auto-upgraded lub blocked | Fix następny |
Anchor link <a href="http://…"> | (a navigation, nie a sub-zasób) | nie mixed treść at wszystkie | N/A |
Detection stack
| warstwa | narzędzie | Sees |
|---|---|---|
| Per strona | Chrome DevTools console / Security panel | dokładny blocked + warned zasoby on the otwarty strona |
| Whole witryna | Ahrefs witryna Audit, Screaming Frog | każdy strona referencing http:// sub-zasoby |
| Production tail | Content-Security-Policy-Report-Only + reporting endpoint | Per-użytkownik, per-strona, i third-party-znacznik violations |
The CSP directives
| Directive | co it robi | Status |
|---|---|---|
upgrade-insecure-requests | Rewrites in-scope http:// sub-zasób żądania to https:// przed sending | Current — the one to używać |
block-all-mixed-content | bloki wszystkie HTTP assets on an HTTPS strona | Deprecated / obsolete |
Content-Security-Policy-Report-Only | raporty violations bez enforcing | Current — używać to mierzyć pierwszy |
Don’t-confuse-te
| Fixes | Scope | |
|---|---|---|
upgrade-insecure-requests | Sub-zasoby the secure strona loads | Same-origin + in-scope; nie third-party top-level nav |
HSTS (Strict-Transport-Security) | Top-level navigation to twój witryna | Forces HTTPS even on pierwszy żądanie; nie a mixed-treść fix |
One-liner fix (CMS): DB search-i-zastępować http://yourdomain → https://yourdomain, then patch templates/plugins, then ustawić upgrade-insecure-requests.
Find mixed treść — snippets
1. Crawl one strona z the command wiersz
Grab a strona i flag dowolny insecure src/href sub-zasoby left in the HTML.
macOS / Linux
# Flag insecure script/img/link/iframe/source references on a single URL
curl -s https://example.com/ \
| grep -Eo '(src|href)="http://[^"]+"' \
| sort -uWindows (PowerShell)
(Invoke-WebRequest -Uri "https://example.com/").Content `
| Select-String -Pattern '(src|href)="http://[^"]+"' -AllMatches `
| ForEach-Object { $_.Matches.Value } | Sort-Object -Uniqueten tylko sees the raw HTML — zasoby injected by JavaScript won’t pokazywać up, który jest exactly why you również używać DevTools i a rzeczywisty crawler.
2. Chrome DevTools Console — lista insecure zasoby on the wyrenderowany strona
Paste do the console on the HTTPS strona to catch even JS-inserted references:
// Every element with an http:// resource attribute in the live DOM
[...document.querySelectorAll('[src],[href],[srcset],[data-src]')]
.filter(el => /^http:\/\//.test(
el.src || el.href || el.getAttribute('srcset') || el.getAttribute('data-src') || ''
))
.map(el => ({ tag: el.tagName, url: el.src || el.href }));The przeglądarka również logs blocked active mixed treść on jego own as
Mixed treść: … ten żądanie ma był blocked; the treść musi być served ponad HTTPS. — read tamte pierwszy.
3. Bookmarklet — one-click console dump
Save as a bookmark; click it on dowolny HTTPS strona to console-log jego http://
references:
javascript:(()=>{const h=[...document.querySelectorAll('[src],[href]')].filter(e=>/^http:\/\//.test(e.src||e.href)).map(e=>e.src||e.href);console.log('%cMixed content candidates:','font-weight:bold',h.length);h.forEach(u=>console.log(u));})();4. Turn on CSP reporting (detect in production)
dodawać a raport-tylko header so rzeczywisty visitors’ przeglądarki tell you o violations — w tym third-party znaczniki i strony twój crawl misses:
Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-report-endpointraport-tylko raporty bez enforcing, so you może size the problem safely przed
switching on upgrade-insecure-requests lub enforcement. (The modern equivalent używa
report-to z a Reporting-Endpoints header.)
5. The safety-net header (once you’ve fixed the źródło)
Content-Security-Policy: upgrade-insecure-requestsRemember it doesn’t upgrade third-party top-level navigation i jest nie a replacement dla HSTS.
Recurring mixed-treść audit SOP
Run ten po HTTPS launches, CMS lub theme releases, znacznik-manager changes, i on a regular schedule dla witryny whose treść changes frequently.
- Crawl HTTPS strony in raw i wyrenderowany modes. Export insecure URLs z
src,srcset, stylesheet, iframe, media, i fetch/XHR żądania; ordinary HTTP anchor links są nie mixed treść. - Collect przeglądarka dowód. sprawdzenie DevTools on representative templates i używać
Content-Security-Policy-Report-Onlyto capture violations triggered by rzeczywisty visitors i third-party znaczniki. - Classify każdy finding. Mark it active lub passive, pierwszy-party lub third-party, statyczny lub JavaScript-injected, i zidentyfikuj template, baza danych pole, plugin, znacznik, lub vendor że owns the źródło.
- Fix the źródło reference. Point it to a działający HTTPS zasób lub a bezpieczny
relative URL. robić nie assume changing
http://tohttps://jest enough; verify the destination actually obsługuje TLS. - używać CSP as a safety net. dodawać
upgrade-insecure-requeststylko po reviewing the findings. It może reduce exposure, ale it robi nie repair the CMS record lub zastępować HSTS. - Re-crawl i render. Active mixed-treść błędy powinien być zero on tested templates; passive zasoby powinien również resolve ponad HTTPS bez fallback.
- zapobiegać recurrence. poprawny the originating template lub editor przepływ pracy, retain raport-tylko collection gdzie appropriate, i assign new violations to the system owner.
Symptom → prawdopodobny cause → fix
| Symptom | prawdopodobny cause | co to inspect | Fix |
|---|---|---|---|
| strona loses layout lub interaction po HTTPS launch | Blocked active treść, zwykle a stylesheet, script, iframe, lub fetch żądanie | DevTools Console i Network błędy on the affected template | Move the zasób to a prawidłowy HTTPS URL i poprawny the źródło template lub znacznik |
| Padlock lub security indicator jest downgraded podczas gdy the strona nadal looks usable | Passive image, audio, video, lub other upgradable treść | wyrenderowany DOM, srcset, lazy-load atrybuty, CSS, i przeglądarka ostrzeżenia | zastępować każdy insecure zasób reference i verify the HTTPS asset zwroty successfully |
| problem zwroty po a CMS release | An absolute HTTP URL pozostaje in the baza danych, theme, plugin, lub generated treść | porównywać new violations by template i deployment; search stored pola i konfiguracja | Fix the generator lub stored wartość, then backfill affected treść |
| Crawl jest clean ale rzeczywisty użytkownicy nadal raport awarie | JavaScript, zgoda logic, ad tech, lub a third-party znacznik injects the żądanie tylko at runtime | CSP raport-tylko events i DevTools z the relevant zgoda/urządzenie state | Change lub usuń responsible znacznik/vendor konfiguracja i retest że state |
upgrade-insecure-requests jest present ale a zasób nadal fails | The HTTP origin ma no działający HTTPS equivalent, lub the polityka robi nie cover że navigation | Upgraded żądanie’s final URL, certificate, i odpowiedź | Host the asset on HTTPS lub zastępować it; robić nie treat the directive as a proxy |
Mixed-treść release tests
Test 1: wyrenderowany template sweep
- Purpose: Catch active i passive zasoby że raw HTML alone misses.
- metoda: Render a representative URL z każdy template i interaction state; inspect Console i Network output dla insecure lub blocked żądania.
- Expected wynik: No sub-zasób jest requested ponad HTTP i no active treść jest blocked.
- awaria trigger: dowolny mixed-treść ostrzeżenie, auto-upgrade awaria, lub missing layout/function caused by a blocked zasób.
- następny action: Trace the żądanie to jego template, znacznik, plugin, lub stored pole; fix the źródło i rerun the sweep.
Test 2: źródło i CSP comparison
- Purpose: Detect violations introduced tylko dla rzeczywisty visitors lub by third parties.
- metoda: porównywać crawler findings z
Content-Security-Policy-Report-Onlyevents, grouped by blocked URL, szablon strony, directive, i owner. - Expected wynik: No unexplained production-tylko violations pozostawać; znany noise jest udokumentowany i excluded narrowly.
- awaria trigger: A repeatable violation absent z the crawl lub an unowned third-party źródło.
- następny action: Reproduce the visitor state i poprawny lub usuń injecting integracja.
Test 3: recurrence test po publishing
- Purpose: Verify the CMS no longer generates new insecure references.
- metoda: publikować a test element przez the normal editorial przepływ pracy, then crawl i render it z the same sprawdzenia używany dla production.
- Expected wynik: Generated znaczniki i załadowany zasoby używać prawidłowy HTTPS URLs.
- awaria trigger: The new strona recreates an HTTP reference previously cleaned z older treść.
- następny action: Fix the editor domyślny, template, plugin, lub treść transform przed the release proceeds.
zasoby worth twój time
My speaking
- Better bezpieczny Than Sorry z HTTPS — SMX East 2016 (SlideShare) — my deep-dive on TLS, common HTTPS implementacja awarie, i the migration gotchas że produce mixed treść in the pierwszy place. (Standing disclaimer: it’s my understanding of te systemy, i the adoption stats in it są z 2016.)
My powiązany writing
- The Beginner’s poradnik to techniczne SEO — gdzie HTTPS i mixed treść fit in the bigger technical picture.
z around the industry
- co jest mixed treść? (web.dev / Google) — the canonical definition i the active-vs-passive split.
- Fixing mixed treść (web.dev / Google) — the krok-by-krok: finding it, fixing sub-zasób URLs,
upgrade-insecure-requests, i CSP reporting. - MDN —
upgrade-insecure-requests— precisely co it upgrades, co it doesn’t, i why it doesn’t zastępować HSTS. - MDN —
block-all-mixed-content— the deprecated blocking directive, dla gdy you inherit it. - MDN — Mixed treść — the przeglądarka-behavior reference dla blockable vs. upgradable zasoby.
- Enable HTTPS on twój serwery (web.dev / Google) — relative/protokół-relative URLs i the surrounding HTTPS setup guidance.
Stats worth citing
- Active mixed treść jest blocked by domyślny. Google: “Most browsers already block this type of content by default to protect users.” — the powód active mixed treść jest a functional outage, nie a ostrzeżenie. źródło
- Active mixed treść jest the greater threat. Google’s own ranking of the two tiers: “Active mixed content poses a greater threat than passive mixed content.” — right-sizes twój triage order. źródło
- Passive mixed treść jest no longer safely “allowed.” Google: “Until recently, passive mixed content was loaded in all browsers … This is now beginning to change.” — the “images are harmless” assumption jest expiring. źródło
upgrade-insecure-requestsjest nie a substitute dla HSTS. MDN states it plainly: it “does not replace theStrict-Transport-Security(HSTS) header.” — the two controls solve różny halves of the problem. źródło- ~89% of the web jest on HTTPS (W3Techs, 2026; confirm the current figure), który
jest exactly why leftover
http://sub-zasoby on an otherwise-secure strona są the common awaria mode now — the strony są HTTPS; the cargo lags behind. Context via the HTTPS hub.
Test yourself: Mixed treść
Five quick questions on mixed treść. Pick an answer dla każdy, then sprawdzenie.
Dziennik zmian
Zaktualizowano 17 lip 2026.
Podsumowanie redakcyjne i zapisane szczegóły zmian.Szczegóły zmian
-
Szczegółowe uwagi dotyczące zmian są obecnie dostępne po angielsku.
Pełne porównanie jest niedostępne — dla tej wersji nie zarchiwizowano wcześniejszej migawki.