Mixed bençerik
ne mixed bençerik dır, neden active mixed bençerik alır blocked -iken passive alır warned hakkında, ve nasıl -e detect ve düzelt insecure sub-kaynaklar ölçekte — browser console, CSP reporting, upgrade-insecure-istekler, block-tümü-mixed-bençerik, ve nasıl CMSes ve ad tech reintroduce o.
Diller
Mixed bençerik dır bir HTTPS sayfa loading bir sub-kaynak üzerinde HTTP. Browsers' güncel taxonomy dır upgradable versus blockable; older active/passive split hâlâ tracks şu bençin en çok types, ile exceptions (CORS-enabled images, srcset/picture, ve IP-ana makine istekler dır blockable, değil upgradable). Active mixed bençerik — scripts, stylesheets, iframes, XMLHttpRequest/fetch — dır blocked outright çünkü bir tampered script -ebilir rewrite whole sayfa, bu nedenle o's ne aslında breaks bir site sonra bir HTTP→HTTPS migration; düzelt o ilk. Passive mixed bençerik — images, audio, video — historically loaded ile bir downgraded padlock ve dır now increasingly auto-upgraded veya blocked de. Anchor bağlantılar ve diğer top-level HTTP navigation değildir mixed bençerik, ve neither dır insecure downloads (bir related, separate boundary). bul o genelinde fetched kaynak, rendered/runtime state, ve gerçek-kullanıcı sessions: tarama HTTPS site, watch Chrome DevTools console (exact wording dır browser/sürüm specific), veya collect bençerik-Security-politika-rapor-yalnızca violations; düzelt o tarafından ilk confirming HTTPS eşdeğeri aslında çalışır, o hâlde pointing her sub-kaynak at https:// (relative/protokol-relative paths yalnızca sonra verifying ownership ve base-URL behavior). bençerik-Security-politika: upgrade-insecure-istekler header rewrites in-scope http:// sub-kaynak istekler — dahil cross-origin ones — -e https:// önce onlar're sent ve önce mixed-bençerik/CSP kontroller çalıştır; o sahiptir no HTTP fallback eğer upgrade fails, o's bir safety net yerine bir substitute bençin cleaning kaynak, o yapmaz upgrade top-level navigation -e üçüncü-party origins (bu nedenle o değildir bir replacement bençin HSTS), ve ayarlama directive itself in rapor-yalnızca mode dır bir no-op — izle ile bir separate rapor-yalnızca politika instead. CMS databases (back up ve dry-çalıştır replacements — naive string-replace -ebilir corrupt serialized data), plugins/themes, service workers/caches, ve ad/analytics tags dır usual re-offenders; denetim ölçekte ile bir crawler ve CSP reporting yerine sayfa tarafından sayfa.
TL;DR — Mixed bençerik dır ne zaman bir secure
https://sayfa loads something — bir image, bir script, bir stylesheet — üzerinde insecurehttp://. şu mixes bir secure sayfa ile insecure pieces, hangi defeats benşaret et of HTTPS. Browsers block dangerous kinds (scripts, styles, iframes) ve warn hakkında milder kinds (images, media). o’s en çok yaygın thing şu breaks bir site yapğru sonra siz switch -e HTTPS, ve düzelt dır simple: yap her kaynak load üzerindehttps://de.
ne mixed bençerik dır
-dığınızda move bir site -e HTTPS, sayfa itself loads securely. ama bir sayfa dır never
sadece HTML — o pulls in images, scripts, stylesheets, fonts, videos, ve
bazen embedded frames -den diğer places. eğer herhangi bir of şunlar pieces dır hâlâ
requested üzerinde plain http://, siz sahip mixed bençerik: bir secure sayfa 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
olarak Google’ın kendi explainer puts o, “bir sayfa sahiptir mixed bençerik ne zaman onun initial HTML dır loaded üzerinde bir secure HTTPS connection, ama diğer kaynaklar (such olarak images, videos, stylesheets, ve scripts) dır loaded üzerinde bir insecure HTTP connection.”
şu önem taşır çünkü insecure pieces reopen tam olarak hole HTTPS closed.
Anyone sitting on network arasında ziyaretçben ve server -ebilir okuyun veya tamper
ile şunlar http:// istekler — bu nedenle padlock in adres bar dır promising daha
security -den sayfa aslında sahiptir.
two kinds, ve ne browsers yap hakkında them
Browsers yapmayın ele al tümü mixed bençerik aynı. onlar sort o tarafından nasıl much damage insecure kaynak -ebilirdi yap:
- Active mixed bençerik — scripts, stylesheets, ve iframes. bunlar -ebilir control whole sayfa, bu nedenle bir tampered bir -ebilirdi rewrite everything. Browsers block o. bu ne aslında breaks sizin layout, sizin interactivity, veya bir whole embedded widget sonra bir migration.
- Passive mixed bençerik — images, audio, ve video. bunlar -ebilir’t take üzerinde sayfa, bu nedenle browsers sahip historically loaded them ama taken away padlock ve gösterilen bir “not fully secure” warning. şu’s changing — modern browsers increasingly upgrade veya block bunlar de.
bir thing bu değil mixed bençerik: bir plain bağlantı (<a href="http://…">) -e bir
HTTP sayfa. şu sadece navigates siz somewhere; o yapmaz load bir insecure piece -e
sizin secure sayfa.
nasıl düzeltileceğben o
düzelt dır almost her zaman aynı: yap insecure kaynak load üzerinde HTTPS.
Change http:// -e https:// in reference, veya kullan bir path şu yapmaz hard-code
protokol at tümü. en çok of time kaynak dır zaten mevcut üzerinde HTTPS —
someone sadece left bir eski http:// URL in bir template, bir plugin, veya database.
-erseniz iste bir safety net bençin anything siz missed, -ebilirsiniz ekle bir tek line of
configuration — upgrade-insecure-requests header — şu söyler browser -e
quietly rewrite leftover http:// kaynak istekler -e https:// önce o sends
them. o’s bir great backstop, ama o’s değil bir neden -e skip cleaning up gerçek
kaynak. 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
iste full picture — exact kaynak listeler browsers block, nasıl -e detect
mixed bençerik ölçekte ile DevTools console ve CSP raporlar,
upgrade-insecure-requests ve block-all-mixed-content directives, neden sizin CMS
keeps reintroducing o, ve nasıl mixed bençerik interacts ile HSTS? Switch -e
Advanced tab.
TL;DR — Mixed bençerik dır bir HTTPS sayfa loading bir sub-kaynak üzerinde HTTP. güncel browser/W3C taxonomy sorts bu -e upgradable ve blockable bençerik; older active/passive split (kullanılan below olarak bir blast-radius framing) hâlâ tracks şu divide bençin en çok kaynak types, ile exceptions — CORS-enabled images,
srcset/picturecandidates, ve IP-ana makine istekler dır blockable hatta gerçben bir plainimg srcdır upgradable. Active (scripts, stylesheets, iframes,XMLHttpRequest/fetch, ve anything browser executes) dır blocked — bir tampered script -ebilir rewrite sayfa — bu nedenle o’s launch-day regression -e düzelt ilk. Passive (images, audio, video) historically loaded ile bir downgraded indicator ve dır now increasingly auto-upgraded veya blocked. Anchor bağlantılar ve diğer top-level HTTP navigation değildir mixed bençerik; neither dır insecure downloads, hangi dır bir related ama separate boundary. Detect o genelinde three layers — fetched kaynak, rendered/runtime state, ve gerçek kullanıcı sessions — tarafından tarama HTTPS site, okuma Chrome DevTools console (exact wording dır browser/sürüm specific), veya collectingContent-Security-Policy-Report-Onlyviolations; düzelt o tarafından confirming bir HTTPS eşdeğeri aslında çalışır, o hâlde pointing her sub-kaynak athttps://(relative/protokol-relative paths dır fine once siz’ve verified ownership ve base-URL behavior, değil bir universal default).Content-Security-Policy: upgrade-insecure-requestsrewrites in-scopehttp://sub-kaynak istekler (dahil cross-origin ones) -ehttps://önce onlar’re sent ve önce mixed-bençerik/CSP kontroller çalıştır — bir net, değil bir substitute bençin düzeltme kaynak, ile no HTTP fallback eğer upgrade fails, ve o yapar değil upgrade top-level navigation -e üçüncü-party origins, bu nedenle o yapmaz replace HSTS. Putting directive itself in rapor-yalnızca mode dır bir no-op — izle ile bir separate rapor-yalnızca politika instead. CMS databases (back up ve dry-çalıştır herhangi bir replacement — naive string-replace -ebilir corrupt serialized data), plugins, themes, service workers/caches, ve ad/analytics tags dır recurring re-offenders — denetim at scale, değil sayfa tarafından sayfa.
HTTPS hub introduces mixed bençerik olarak bir of two launch-day başarısızlık modes of bir migration ( diğer olma yönlendirmeler). bu deep dive o benşaret eder -e — exact kaynak tiers, detection stack, CSP directives, ve operational nedenler o keeps coming back.
ne counts olarak mixed bençerik — ve ne yapmaz
Mixed bençerik dır scoped precisely: o’s hakkında sub-kaynaklar sayfa loads, değil hakkında bağlantılar sayfa contains. Google’s definition: “bir sayfa sahiptir mixed bençerik ne zaman onun initial HTML dır loaded üzerinde bir secure HTTPS connection, ama diğer kaynaklar (such olarak images, videos, stylesheets, ve scripts) dır loaded üzerinde bir 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
trap şu reassures kişiler falsely dır anchor tag. bir <a href="http://…">
bağlantı -e bir HTTP sayfa dır değil mixed bençerik — o navigates -e bir yeni belge; o
yapmaz load bir insecure kaynak -e güncel secure bir. şu’s true of herhangi bir
top-level navigation -e bir HTTP sayfa, değil sadece anchor tıklamalar.
o’s hâlâ worth sending outbound bağlantılar -e HTTPS destinations. altında modern
browser-default Referrer-Policy (strict-origin-when-cross-origin), bir click -den
bir HTTPS sayfa -e bir HTTP destination yapar drop Referer header, hangi -ebilir mangle
referral analytics — ama şu behavior dır politika- ve browser-dependent, değil bir
universal kural: bir sayfa (veya bir upstream proxy/CDN) şu sets bir looser
Referrer-Policy -ebilir hâlâ send bir referrer on şu downgrade. kontrol et gerçek
Referrer-Policy in effect önce asserting nasıl much referral data bir given site
loses — ama in herhangi bir durum, şu’s bir separate sorun -den mixed bençerik, değil mixed
bençerik itself.
Active vs. passive: distinction şu sets sizin priorities
Modern browser ve W3C dokümantasyon classifies mixed bençerik primarily olarak upgradable versus blockable bençerik — kaynak types browser -ecek silently retry üzerinde HTTPS versus ones o refuses outright — yerine older active/passive split. Active/passive dır hâlâ yararlı shorthand bençin neden browsers draw şu line (nasıl much of sayfa kaynak -ebilirdi compromise), ve o’s nasıl Google’ın kendi explainer frames o, bu nedenle o’s kept below olarak birincil triage framing — sadece yapmayın ele al o olarak güncel resmî taxonomy ne zaman -meniz gerekir neden hakkında bir specific kaynak type; see exceptions sonra two listeler.
Browsers classify mixed bençerik tarafından nasıl much of sayfa insecure kaynak -ebilirdi compromise. Google: “Active mixed bençerik poses bir greater threat -den passive mixed bençerik.” şu tek sentence -meli drive sizin triage sıra.
Active mixed bençerik interacts ile — ve -ebilir take üzerinde — whole sayfa. Google describes o olarak “scripts, stylesheets, iframes, ve herhangi bir diğer code browser -ebilir download ve execute.” uygulamada active liste dır:
<script src="http://…">— worst durum; bir intercepted script -ebilir rewrite entire DOM, exfiltrate form data, veya inject bençerik.<link rel="stylesheet" href="http://…">— CSS -ebilir hide, reposition, veya overlay anything, bu nedenle o’s ele alınır olarak active.<iframe src="http://…">— bir embedded insecure belge bençinde sizin secure bir.XMLHttpRequest/fetch()-ehttp://— insecure data sayfa o hâlde acts on.- Web fonts,
<object>/<embed>kaynaklar, ve<link>varyantlar şu pull in executable veya layout-controlling bençerik.
çünkü bir tampered active kaynak -ebilir rewrite sayfa, “en çok browsers zaten block bu type of bençerik tarafından default -e protect kullanıcılar.” şu’s neden active mixed bençerik dır ne visibly breaks things sonra bir migration — bir blocked stylesheet strips sizin CSS, bir blocked script kills interactivity, bir blocked iframe leaves bir hole. düzelt active ilk. o’s bir functional bug, değil sadece bir security nag.
Passive (display) mixed bençerik — Google: “including images, video, and audio” — “doesn’t interact with the rest of the page.” bir intercepted image -ebilir olmak swapped ama -ebilir’t seize belge. bu nedenle historically browsers loaded o ve sadece downgraded indicator: “Until recently, passive mixed bençerik idi loaded in tümü browsers, çünkü blocking o -irdi sahip broken çok söyleıda web siteleri. bu now beginning -e change.” direction of travel genelinde browsers dır toward auto-upgrading passive kaynaklar -e HTTPS nerede olası ve blocking ne -ebilir’t olmak upgraded, bu nedenle “passive = harmless” dır no longer bir safe assumption -e oluştur on.
Exceptions active/passive split yapmaz capture
upgradable/blockable line sahiptir several exceptions şu yapmayın izle general “images upgrade, scripts block” pattern above — bunlar dır durumlar şu aslında trip kişiler up uygulamada:
- CORS-enabled image istekler dır force-failed, değil upgraded. bir ordinary
<img src="http://…">dır upgradable, ama bir image istek yapılmış ilecrossoriginayarla dır ele alınır differently tarafından mixed-bençerik algorithm ve fails yerine silently upgrading. srcsetve<picture>candidates dır blockable, değil upgradable. aynı image, requested aracılığıyla bir responsive-image mechanism yerine bir plainsrc, falls -e blockable category — yapmayın assume her image reference behaves aynı way.- IP-adres hosts dır blocked, değil upgraded, hatta bençin bir otherwise-upgradable
kaynak type. bir reference like
http://203.0.113.5/logo.pngyapmaz al automatic-upgrade treatment bir domain-hosted eşdeğeri -irdi. - Nested contexts ve workers dır in scope. Mixed-bençerik kontroller uygula bençinde iframes ve bençinde service/shared workers de, değil sadece top belge — bir worker fetching bir insecure script dır hâlâ mixed bençerik.
- Local ve loopback origins sahip onların kendi nuance.
localhost, loopback adresler, vefile://contexts dır “potentially trustworthy origins” altında spec hatta olmadan TLS, bu nedenle bir simple HTTP-vs-HTTPS heuristic yapmaz map cleanly üzerine local development environments. - Insecure downloads dır bir related ama separate boundary. bir download initiated
-den bir secure sayfa üzerinde
http://dır bir gerçek risk, ama o’s governed tarafından onun kendi download-security handling, değil sub-kaynak mixed-bençerik kurallar in bu section. - Top-level HTTP navigation hâlâ değildir mixed bençerik, dahil anchor-bağlantı durum above — şu’s bir property of navigation, değil of bir loaded sub-kaynak, ancak çok söyleıda of bunlar diğer exceptions uygula.
Detecting mixed bençerik — whole stack
yoktur tek button, ve her layer below yanıtlar bir farklı soru — bir temiz sonuç at bir layer yapmaz clear others. Diagnose fetched kaynak (ne raw HTML aslında references), rendered/runtime state (ne browser istekler once o’s parsed sayfa ve çalıştır onun scripts), ve gerçek kullanıcı sessions (ne olur bençin bir ziyaretçben behind bir consent banner, bir geo-yönlendirme, bir login wall, veya bir üçüncü-party tag şu yalnızca fires altında specific conditions) separately. Layer bunlar -den “one page” -e “whole site”:
-
** Chrome DevTools console** (rendered/runtime state). Load HTTPS sayfa ve open console. Blocked active mixed bençerik logs bir message along lines of “Mixed bençerik: sayfa … idi loaded üzerinde HTTPS, ama requested bir insecure … bu istek sahiptir olmuş blocked; bençerik -meli olmak sunulan üzerinde HTTPS.” Passive şu alır loaded logs bir warning yerine bir block. Security panel (veya sorunlar tab) gruplar o up per sayfa. Fast bençin spot-kontroller ve bençin confirming bir specific düzelt — ama ele al exact message wording, panel layout, ve hatta hangi kaynak types al blocked olarak browser- ve sürüm-specific; bu idi yapğrulanmış karşı Chrome olarak of 2026-07 ve yapmalısınız verify güncel wording on gerçek browser/sürüm siz’re diagnosing yerine quoting o olarak bir düzeltilmiş UI string, ve expect Firefox, Safari, ve Edge -e differ.
-
bir site crawler (fetched kaynak, ölçekte). DevTools dır per-sayfa; bir tarama dır site-wide. Ahrefs site denetimi ve Screaming Frog her ikisi flag sayfalar şu reference
http://sub-kaynaklar on bir HTTPS site — yalnızca realistic way -e bul mixed bençerik genelinde thousands of URLs. bu birincil araç bençin bir denetim, ama o’s hâlâ okuma kaynak: bir tarama passing temiz yapmaz prove rendered sayfa veya bir gerçek session dır temiz de — record hangi browser/araç/sürüm produced bir given sonuç yerine reporting bir unqualified geç/başarısız ol. -
CSP violation reporting (gerçek kullanıcı sessions). -ebilirsiniz yap browsers of gerçek visitors rapor mixed bençerik back -e siz, hangi catches kaynaklar şu yalnızca load on certain sayfalar, bençin certain kullanıcılar, altında certain consent states, veya -den üçüncü-party tags siz yapmayın control — layer neither bir tarama nor bir tek DevTools kontrol et -ebilir ulaş. web.dev: “-ebilirsiniz kullan bençerik security politika -e collect raporlar of mixed bençerik on sizin site. -e enable bu feature, ayarla
Content-Security-Policy-Report-Onlydirective tarafından adding o olarak bir response header bençin sizin site.” rapor-yalnızca mode raporlar violations olmadan enforcing politika, bu nedenle -ebilirsiniz measure sorun in production önce siz turn on blocking. ( mechanism dır modernreport-to/Reporting-Endpointsheader, veya olderreport-uri. Note bu bir farklı, general-purpose rapor-yalnızca politika -denupgrade-insecure-requestsitself — putting şu specific directive in rapor-yalnızca mode yapmaz çalışır, olarak covered below.)
kullan tümü three: DevTools -e verify bir rendered sayfa, bir crawler -e inventory fetched kaynak, CSP raporlar -e catch gerçek-session uzun tail şu yalnızca shows up in wild. bir tarama passing dır evidence hakkında kaynak, değil bir guarantee şu her consent state, ad-tech varyant, personalization branch, veya worker dır temiz.
düzeltme at kaynak
gerçek düzelt starts önce siz touch bir tek reference: verify HTTPS eşdeğeri aslında vardır, presents bir valid certificate, ve döndürür bençerik siz expect — yapmayın assume swapping scheme dır safe sadece çünkü domain resolves. Once şu’s yapğrulanmış, her sub-kaynak reference -meli resolve üzerinde HTTPS. Options below dır in rough sıra of preference, ama her bir hâlâ depends on ownership ve context, değil sadece string siz type:
- Absolute HTTPS URLs — change
http://cdn.example.com/app.js-ehttps://cdn.example.com/app.js. Explicit ve unambiguous; safest default ne zaman siz’re değil certain hakkında sunma context below. - Root-relative veya relative paths — bençin kaynaklar siz kendi on aynı site,
/assets/app.jsinherits sayfa’s scheme automatically. Google’s HTTPS rehberlik: “emin olun intrasite URLs ve external URLs yapmayın depend on bir specific protokol. kullan relative paths veya leave out protokol olarak in//example.com/something.js.” ele al bu olarak conditional, değil bir universal recommendation: o yalnızca holds once siz’ve yapğrulanmış siz aslında kendi kaynak (bir relative path -e bir üçüncü-party asset yapmaz yap sense), şu sayfa’s gerçek base URL resolves way siz expect (bir<base>tag, bir proxied path, veya bir embedded/AMP context -ebilir change ne “relative” anlamına gelir), ve şu nothing downstream reconstructs URL in bir way şu reintroduceshttp://— client-side code building bir URL -denwindow.locationveya bir stored absolute değer, örneğin. - protokol-relative URLs (
//example.com/something.js) hâlâ çalışır, ama onlar’re değil tercih edilen universal düzelt — gate them on aynı ownership/base-URL kontroller above, değil sadece habit. On bir tümü-HTTPS web, bir explicithttps://dır genellikle clearer ve avoids surprises eğer file dır ever opened -den bir non-HTTP context; ulaş bençin protokol-relative yalnızca nerede siz sahip bir specific neden değil -e hard-code scheme.
ölçekte siz almost never hand-edit templates bir tarafından bir — ama yapmayın çalıştır bir
unguarded database string-replacement karşı production either. http://yourdomain
→ https://yourdomain görünür like bir simple bul-ve-replace, ve bençin plain-text
fields o çoğu zaman dır safe, ama CMS bençerik -ebilir olmak serialized veya structured (PHP
serialized arrays, JSON blobs, block-editor data) nerede bir naive substring swap
corrupts record yerine düzeltme o. kullan application-aware tooling şu
understands serialization format, back up database ilk, ve
dry-çalıştır replacement bu nedenle -ebilirsiniz review affected rows önce committing.
o hâlde düzelt handful of template/config files şu emit URLs; crawler ve
CSP raporlar mop up stragglers.
upgrade-insecure-requests: safety net (ve onun limits)
proactive backstop dır bir bençerik-Security-politika directive. web.dev: ”
upgrade-insecure-requests CSP directive instructs browser -e upgrade insecure
URLs önce making network istekler.” ayarla header:
Content-Security-Policy: upgrade-insecure-requestsPer MDN, o “instructs kullanıcı agents -e ele al tümü of bir site’s insecure URLs (şunlar sunulan üzerinde HTTP) olarak gerçben onlar sahip olmuş replaced ile secure URLs (şunlar sunulan üzerinde HTTPS).” Concretely, MDN says it upgrades: “istekler -e load kaynaklar (such olarak images, scripts, veya fonts),” “navigation istekler (such olarak bağlantı targets) hangi dır aynı-origin ile belge,” “navigation istekler in nested browsing contexts, such olarak iframes,” and “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 önem taşır beyond şu quote. ilk, sub-kaynak upgrade değildir limited -e aynı-origin istekler — o’s navigation upgrade şu’s aynı-origin-yalnızca per quote above; ordinary sub-kaynak istekler al rewritten genelinde origins de, bu nedenle bir CDN-hosted script veya bir üçüncü-party font alır upgraded, değil sadece aynı-site assets. ikinci, rewrite olur önce browser’s mixed-bençerik ve CSP kontroller evaluate istek, bu da neden bir kaynak şu -irdi otherwise olmak blocked outright olarak mixed bençerik -ebilir load cleanly once o’s olmuş upgraded — upgrade pre-empts block.
Three limits siz -meli değil paper üzerinde:
- o yapmaz upgrade üçüncü-party top-level navigation. MDN: “ancak, top-level
navigation istekler whose target dır bir farklı origin -ecek değil olmak upgraded.”
çünkü of şu, o dır explicitly değil bir replacement bençin HSTS: ”
upgrade-insecure-requestsdirective -ecek değil ensure şu kullanıcılar visiting sizin site via bağlantılar on üçüncü-party siteler -ecek olmak upgraded -e HTTPS bençin top-level navigation ve thus yapmaz replaceStrict-Transport-Security(HSTS) header.” (daha on şu split below.) - o’s bir net, değil bir düzelt, ve o yapmaz fall back. eğer kaynak genuinely
değildir mevcut üzerinde HTTPS, upgraded istek sadece fails outright — o yapar
değil fall back -e özgün
http://sürüm. Cleaning kaynak dır hâlâ job; directive kapsar ne siz missed, değil ne’s genuinely broken. - rapor-yalnızca mode yapmaz perform upgrade — o’s bir no-op. Putting
upgrade-insecure-requestsbençinde birContent-Security-Policy-Report-Onlyheader dır ignored tarafından browser: nothing alır rewritten, ve nothing alır reported bençin o either. -erseniz iste görünürlük -e ne upgrade -irdi affect önce siz enforce o, çalıştır bir separate, general-purpose rapor-yalnızca politika şu raporlar disallowedhttp://destinations ( aynıdefault-src https:rapor-yalnızca approach kullanılan bençin detection above) — -ebilirsiniz’t al şu görünürlük tarafından makingupgrade-insecure-requestsitself rapor-yalnızca.
block-all-mixed-content — çoğunlukla geçmişe ait
orada’s bir companion directive, block-all-mixed-content, hangi — per MDN —
“prevents loading any assets over HTTP when the page uses HTTPS,” dahil “her ikisi
blockable ve upgradable mixed bençerik,” ve uygulanır -e iframes de. uygulamada o’s
olmuş superseded. MDN marks o deprecated ve “obsolete in the specification,”
noting: “bençerik şu değildir blocked dır now her zaman upgraded -e bir secure connection, bu nedenle
bu directive değildir gerekli.” ulaş bençin upgrade-insecure-requests; ele al
block-all-mixed-content olarak legacy siz -ebilir inherit, değil something -e deploy yeni.
-erseniz zaten send upgrade-insecure-requests, block-all-mixed-content sahiptir
nothing left -e yap bençin upgraded istekler — upgrade rewrite olur ilk, bu nedenle tarafından
time bir block-tümü kontrol et -irdi çalıştır, istek sahiptir zaten olmuş upgraded (veya sahiptir
zaten failed). o’s değil sadece legacy; o’s redundant wherever UIR dır zaten
deployed.
neden sizin CMS keeps reintroducing o
Mixed bençerik değildir bir bir-time cleanup — o recurs, çünkü several systems quietly
re-inject http:// URLs sonra siz think siz’re done:
- ** bençerik database.** In WordPress, Drupal, ve en çok CMSes, editors paste
images ve embeds ile absolute
http://URLs straight -e post bodies. şunlar live in database, değil in bir template, bu nedenle bir code-level düzelt never touches them — hence DB arama-ve-replace. - Themes ve plugins. bir theme veya plugin şu hard-codes bir
http://asset URL (bir font, bir script, bir background image) reintroduces mixed bençerik on her sayfa o renders, ve bir plugin update -ebilir bring o back sonra siz’ve cleaned o. - Ad tech, analytics, ve üçüncü-party tags. Tag managers, ad networks, chat
widgets, ve analytics snippets load onların kendi sub-kaynaklar — ve eğer bir vendor’s
tag hâlâ çbirğrılar
http://, o’s mixed bençerik -ebilirsiniz’t düzelt in sizin kendi codebase. bu tam olarak uzun tail CSP reporting dır bençin; durable düzelt dır pressing vendor -e sun üzerinde HTTPS (veya dropping tag). eğer bir vendor sahiptir no working HTTPS endpoint, durable choices dır aynı three: al them -e düzelt o, replace dependency, veya drop o — orada değildir bir fourth option şu keeps insecure sürüm çalışbir safely. - Service workers ve caches. bir service worker -ebilir cache bir response (veya
istek itself) şu hâlâ benşaret eder at
http://, ve o’ll koru sunma şu stale reference on repeat visits hatta sonra siz düzelt kaynak. Reproduce bir suspected düzelt in bir incognito/uncached session önce concluding o didn’t çalışır, ve yap sure bir deploy şu changes kaynak URLs ayrıca bumps service worker/cache sürüm bu nedenle stale entries al evicted yerine replayed. - Hard-coded
http://in eski bençerik ve email/print templates şu al reused.
operational takeaway: bake detection -e bir recurring denetim (crawler + CSP raporlar), değil bir launch-day checklist siz çalıştır once.
nasıl mixed bençerik interacts ile HSTS
Mixed bençerik ve HSTS solve adjacent ama farklı problems, ve conflating them dır bir yaygın mistake:
upgrade-insecure-requestsdüzeltmeler sub-kaynaklar sizin kendi secure sayfa istekler — o upgrades images/scripts/iframes sayfa pulls in.- HSTS (
Strict-Transport-Security) forces * top-level navigation -e sizin site* üzerine HTTPS — hatta çok ilk istek, önce herhangi bir yönlendirme fires — ve defends karşı SSL-stripping. Google frames HSTS olarak bir way -e “kaçın maliyet of 301 yönlendirme” and to “defeat attacks like SSL Stripping.”
onlar yapmayın substitute her biri bençin diğer. olarak MDN spells out, upgrade-insecure-requests
“-ecek değil ensure şu kullanıcılar visiting sizin site via bağlantılar on üçüncü-party siteler -ecek
olmak upgraded -e HTTPS bençin top-level navigation ve thus yapmaz replace
Strict-Transport-Security (HSTS) header.” bir fully hardened setup kullanır her ikisi:
upgrade-insecure-requests (veya temiz kaynak URLs) bu nedenle secure sayfa sahiptir no insecure
cargo, ve HSTS bu nedenle nobody reaches site üzerinde HTTP in ilk place. ve
usual HSTS caution hâlâ uygulanır — Google: “yapmayın enable HSTS until siz’re certain
sizin site operation dır robust enough -e kaçın ever deploying HTTPS ile certificate
validation errors,” ve preloading dır close -e bir bir-way door.
yapar mixed bençerik hurt SEO yapğrudan?
Lead ile direct effects, çünkü onlar’re ones siz aslında control: mixed bençerik dır ilk bir security ve functional sorun. Blocked active mixed bençerik breaks rendering ve interactivity outright — bir missing stylesheet veya script dır bir gerçek regression regardless of ne bir arama motoru yapar of o. şu’s neden enough -e düzelt o önce siz think hakkında sıralamalar at tümü.
SEO consequences dır gerçek ama conditional, değil direct veya guaranteed. güncel
resmî Google rehberlik yapmaz establish düzeltme mixed bençerik olarak bir direct sıralama
boost — HTTPS sıralama sinyal itself dır scheme-based (whether URL starts ile
https://), değil bir sub-kaynak cleanliness kontrol et, bu nedenle bir stray insecure image yapmaz
tarafından itself maliyet siz “the HTTPS signal.” ama downstream effects -ebilir hâlâ göster up
depending on ne’s aslında broken: eğer Googlebot renders bir sayfa whose CSS veya JS idi
blocked olarak mixed bençerik, o -ebilir dizin bir broken veya incomplete sürüm; bir downgraded
security indicator -ebilir hurt kullanıcı trust, etkileşim, ve conversions hatta ile no
sıralama change at tümü; ve Google’s general preference bençin HTTPS canonicals dır
itself conditional — invalid certificates, insecure dependencies,
HTTPS—e-HTTP yönlendirmeler, veya conflicting canonical sinyaller elsewhere on sayfa -ebilir
tümü change hangi URL alır seçilen, independent of mixed bençerik specifically. ele al
rendering, dizine ekleme, canonical’laştırma, ve analytics effects olarak things -e verify on
sizin kendi sayfalar, değil universal outcomes -e promise — ve düzelt mixed bençerik bençin
security ve functional nedenler ilk.
bu sits bençinde broader HTTPS bençin SEO topic, hangi kapsar migration playbook, sıralama-sinyal weight, ve HSTS in full; -erseniz’re ayrıca debugging certificate itself (chain errors, expiry, DV/OV/EV), şu’s bir sibling deep dive.
AI özet
bir condensed take on Advanced sürüm:
- Mixed bençerik = bir HTTPS sayfa loading bir sub-kaynak üzerinde HTTP. o’s hakkında kaynaklar sayfa loads, değil bağlantılar o contains — bir anchor -e bir HTTP sayfa (veya herhangi bir top-level HTTP navigation) dır değil mixed bençerik, ve neither dır bir insecure download (bir related ama separate boundary).
- güncel taxonomy dır upgradable/blockable; active/passive dır older ama hâlâ-
yararlı blast-radius framing. Active (scripts, stylesheets, iframes,
XMLHttpRequest/fetch— anything browser executes) dır blocked çünkü bir tampered script -ebilir rewrite sayfa; o’s launch-day regression, düzelt o ilk. Passive (images, audio, video) historically loaded ile bir downgraded padlock ve dır now increasingly auto-upgraded veya blocked. Exceptions -e general pattern: CORS-enabled image istekler dır force-failed yerine upgraded,srcset/<picture>candidates dır blockable (değil upgradable) like plainimg srcdır, IP-adres hosts dır blocked yerine upgraded, ve nested contexts/workers ve local/loopback origins sahip onların kendi nuances. - Detect genelinde three layers, değil bir: fetched kaynak (bir crawler like Ahrefs
site denetimi veya Screaming Frog, site-wide), rendered/runtime state ( Chrome
DevTools console/Security panel, per-sayfa — exact wording dır browser/sürüm
specific, yapğrulanmış karşı Chrome olarak of 2026-07), ve gerçek kullanıcı sessions
(
Content-Security-Policy-Report-Onlyviolation raporlar, production uzun tail dahil üçüncü-party tags ve consent-gated kaynaklar). bir temiz sonuç at bir layer yapmaz clear others. - düzelt at kaynak, sonra verifying HTTPS eşdeğeri aslında çalışır: benşaret et
her sub-kaynak at
https://; relative/protokol-relative paths dır fine yalnızca once siz’ve verified ownership ve sayfa’s gerçek base-URL behavior, değil bir default. ölçekte, back up database ve dry-çalıştır herhangi bir replacement — naive string-replace -ebilir corrupt serialized/structured CMS data — o hâlde düzelt remaining template/config files. Watch bençin service workers/caches replaying stalehttp://references sonra kaynak dır düzeltilmiş. upgrade-insecure-requests(bir CSP header) rewrites in-scopehttp://sub-kaynak istekler — dahil cross-origin ones — -ehttps://önce onlar’re sent ve önce mixed-bençerik/CSP kontroller çalıştır, bir safety net ile no HTTP fallback eğer upgrade fails. o yapar değil upgrade top-level navigation -e üçüncü-party origins, bu nedenle o dır değil bir replacement bençin HSTS, ve putting directive itself in rapor-yalnızca mode dır bir no-op — izle ile bir separate rapor-yalnızca politika instead.block-all-mixed-contentdır deprecated/obsolete, ve redundant onceupgrade-insecure-requestsdır deployed ( upgrade runs ilk, bu nedenle block-tümü sahiptir nothing left -e block).- o recurs çünkü CMS database, themes/plugins, service workers/caches, ve
ad/analytics tags koru reintroducing
http://URLs — denetim on bir schedule, değil once. - SEO impact dır conditional, değil direct: güncel Google rehberlik yapmaz establish bir direct sıralama boost -den düzeltme mixed bençerik, ve HTTPS sinyal dır scheme-based. ama blocked active kaynaklar -ebilir yap Googlebot render/dizin bir broken sayfa, padlock downgrade maliyetler trust, ve Google’s HTTPS-canonical preference dır itself conditional on things like certificate validity ve conflicting sinyaller — değil bir guarantee tied -e mixed bençerik specifically.
resmî dokümantasyon
birincil-kaynak dokümantasyon -den Google ve browser/standards ekipler.
Google / web.dev
- ne dır mixed bençerik? — definition, ve active vs. passive split ile browser behavior.
- düzeltme mixed bençerik — bulma o, düzeltme sub-kaynak URLs,
upgrade-insecure-requests, ve CSP reporting. - Enable HTTPS on sizin servers — relative/protokol-relative URLs, HTTP
<iframe>note, ve HSTS rehberlik. - Preventing mixed bençerik dır bir part of Google’s HTTPS rehberlik — surrounding site-move/migration playbook mixed bençerik düzeltmeler sit bençinde.
MDN / standards
- CSP:
upgrade-insecure-requests— ne o upgrades, ne o yapmaz, ve neden o yapmaz replace HSTS. - CSP:
block-all-mixed-content— deprecated/obsolete blocking directive. - MDN — Mixed bençerik — browser-behavior reference bençin blockable vs. upgradable bençerik.
- bençerik Security politika (CSP) — header bunlar directives live in, dahil reporting.
Quotes -den kaynak
On—record definitions -den Google’s web.dev ve MDN standards docs. her bağlantı dır bir deep bağlantı şu jumps -e quoted passage nerede platform supports o.
Google / web.dev — ne mixed bençerik dır
- “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.” kaynak
- “Active mixed content poses a greater threat than passive mixed content.” kaynak
- Active mixed bençerik “includes scripts, stylesheets, iframes, and any other code the browser can download and execute,” ve “Most browsers already block this type of content by default to protect users.” kaynak
- Passive mixed bençerik, “including images, video, and audio,” “doesn’t interact with the rest of the page.” ve: “Until recently, passive mixed content was loaded in all browsers, because blocking it would have broken many websites. This is now beginning to change.” kaynak
Google / web.dev — detecting ve düzeltme
- “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.” kaynak - “The
upgrade-insecure-requestsCSP directive instructs the browser to upgrade insecure URLs before making network requests.” kaynak - “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.” kaynak
MDN — upgrade-insecure-requests ve onun 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).” kaynak - “However, top-level navigation requests whose target is a different origin will not be upgraded.” kaynak
- “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.” kaynak
MDN — block-all-mixed-content dır legacy
- “The HTTP Content-Security-Policy (CSP)
block-all-mixed-contentdirective prevents loading any assets over HTTP when the page uses HTTPS.” ama o dır marked deprecated ve “obsolete in the specification,” çünkü “Content that isn’t blocked is now always upgraded to a secure connection, so this directive is not needed.” kaynak
Mixed-bençerik checklist
çalıştır bu during ve sonra bir HTTP→HTTPS migration, o hâlde on bir recurring basis:
bul o
- Loaded key templates (home, product, article, checkout) üzerinde HTTPS ile Chrome DevTools console open ve noted her “Mixed Content” message.
- Ran bir full tarama (Ahrefs site denetimi veya Screaming Frog) ve pulled liste
of sayfalar referencing
http://sub-kaynaklar. - ayarla
Content-Security-Policy-Report-Onlyile bir reporting endpoint -e catch production uzun tail (per-kullanıcı, per-sayfa, ve üçüncü-party tags).
düzelt o (active ilk)
- tümü active references düzeltilmiş:
<script>,<link rel="stylesheet">,<iframe>,fetch/XMLHttpRequest, fonts — bunlar dır blocked, bu nedenle onlar break sayfa. - tümü passive references düzeltilmiş:
<img>,<audio>,<video>, ve onların<source>/poster URLs. - CMS database replacement (
http://yourdomain→https://yourdomain) bençin pasted bençerik — backed up, dry-çalıştır ile application-aware tooling, değil bir raw string-replace karşı serialized/structured fields. - Theme/plugin hard-coded
http://asset URLs found ve patched. - Service worker/cache entries reproduced in bir uncached session, ve
cache/service-worker sürüm bumped bu nedenle stale
http://references yapmayın replay. - üçüncü-party tags (ads, analytics, chat, embeds) yapğrulanmış -e load üzerinde HTTPS — veya vendor pushed / tag dropped.
Backstop ve verify
-
Content-Security-Policy: upgrade-insecure-requestsheader ayarla olarak bir safety net (understanding o yapar değil replace HSTS). - Re-tarandı ve re-checked console — zero blocked active kaynaklar, temiz padlock on checked sayfalar.
- Mixed-bençerik detection eklendi -e recurring denetim, değil sadece launch checklist (plugin updates ve yeni bençerik reintroduce o).
hangi düzelt yapar bu mixed-bençerik durum ihtiyaç duy?
çalışır down -den symptom.
dır insecure thing bir kaynak sayfa loads, veya bir bağlantı sayfa contains?
- bir bağlantı (
<a href="http://…">) → değil mixed bençerik. Leave o (optionally benşaret et o at HTTPS bençin referral-data cleanliness). durdur burada. - bir loaded kaynak (script, style, iframe, image, font, media,
fetch) → koru going.
dır kaynak mevcut üzerinde HTTPS?
- Yes, ve siz’ve verified o (valid cert, döndürür intended bençerik) →
change reference -e
https://( safe default), veya bir relative / protokol-relative path yalnızca -erseniz kendi kaynak ve sahip checked sayfa’s base-URL behavior. bu gerçek düzelt. Done. - No / unsure → dır o ilk-party (sizin kendi asset)?
- ilk-party → sun o üzerinde HTTPS (o’s sizin server; -ebilirsiniz). o hâlde düzelt reference olarak above.
- üçüncü-party (bir vendor tag, ad, embed) → ask vendor bençin bir HTTPS endpoint;
eğer onlar yapmayın sahip bir, replace veya drop tag.
upgrade-insecure-requests-ecek try -e upgrade o, ama eğer vendor sahiptir no HTTPS sürüm upgraded istek sadece fails.
dır o active veya passive?
- Active (script / stylesheet / iframe /
fetch/ font) → highest priority — o’s blocked, bu nedenle sayfa dır functionally broken until siz düzelt o. - Passive (image / audio / video) → düzelt o de, ama o’s lower urgency (padlock downgrade / olası future block, değil bir immediate break).
yap siz iste bir safety net bençin whatever siz missed?
- ayarla
Content-Security-Policy: upgrade-insecure-requests. Remember: net, değil substitute — ve o yapmaz kapsa üçüncü-party top-level navigation, bu nedenle o dır değil bir stand-in bençin HSTS.
yap siz ayrıca ihtiyaç duy -e force top-level sayfa üzerine HTTPS bençin ilk-time / üçüncü-party referrals?
- şu’s HSTS, bir separate control. ekle
Strict-Transport-Security— ama yalnızca once sizin certificate operation dır rock-solid, çünkü HSTS (especially preload) dır close -e bir bir-way door.
mental models
1. kaynaklar, değil bağlantılar. Mixed bençerik dır hakkında ne secure sayfa loads, never hakkında nerede o bağlantılar. eğer -ebilirsiniz’t decide whether something counts, ask: yapar browser fetch bu -e oluştur güncel sayfa? Yes → olası mixed bençerik. o sadece takes me -e başka bir sayfa → değil mixed bençerik.
2. Triage tarafından ne browser yapar, değil tarafından severity in abstract. Active (scripts, styles, iframes) dır blocked → o’s bir functional bug, düzelt ilk. Passive (images, media) dır warned/upgraded → düzelt sonraki. browser’s kendi behavior dır sizin priority queue.
3. Detection dır bir funnel: verify → inventory → catch tail. DevTools console (bir sayfa, exact), crawler (whole site, bulk), CSP raporlar (production, üçüncü-party, per-kullanıcı uzun tail). No tek araç sees tümü three.
4. düzelt kaynak; net rest.
temiz gerçek URLs — DB, templates, tags. o hâlde ekle
upgrade-insecure-requests olarak bir backstop bençin ne slips aracılığıyla. directive dır
insurance, değil bir repair.
5. Two farklı “force HTTPS” jobs, two farklı araçlar.
upgrade-insecure-requests upgrades sub-kaynaklar sizin secure sayfa istekler.
HSTS forces top-level navigation -e sizin site üzerine HTTPS. onlar yapmayın
overlap ve bir never replaces diğer — bir hardened site kullanır her ikisi.
6. o’s bir recurring denetim, değil bir bir-time task.
CMS database, plugin/theme updates, ve üçüncü-party tags koru reintroducing
http://. ele al detection olarak bir scheduled sweep, veya o silently comes back.
Mixed-bençerik anti-patterns
Mistakes şu leave insecure bençerik live — veya paper üzerinde o yerine düzeltme o.
- Treating
upgrade-insecure-requestsolarak düzelt. o’s bir net. eğer kaynak sahiptir no HTTPS sürüm upgraded istek fails, ve siz’ve hidden bir broken dependency yerine resolving o. temiz kaynak URLs; kullan directive bençin tail. - Assuming bir code deploy cleaned database. In bir CMS, en çok
http://image ve embed URLs live in bençerik rows, değil templates. bir template düzelt leaves her eski post mixed. çalıştır DB arama-ve-replace. - Deprioritizing active mixed bençerik çünkü “it’s just a warning.” o değildir — active dır blocked. bir blocked stylesheet veya script dır bir functional outage, değil bir cosmetic nag.
- Spot-checking homepage ve calling o done. Mixed bençerik hides on product sayfalar, eski blog posts, ve paths yalnızca bazı kullanıcılar hit. tarama whole site ve kullan CSP reporting bençin ne tarama -ebilir’t ulaş.
- Ignoring üçüncü-party tags. bir ad, analytics, veya chat vendor hâlâ calling
http://dır mixed bençerik -ebilirsiniz’t düzelt in sizin kendi repo. Chasing o in sizin codebase forever dır wasted effort — push vendor veya drop tag. - kullanarak
block-all-mixed-contenton bir yeni oluştur. o’s deprecated ve obsolete. ulaş bençinupgrade-insecure-requestsinstead. - Confusing
upgrade-insecure-requestsile HSTS. bir upgrades sub-kaynaklar; diğer forces top-level HTTPS ve defends karşı SSL stripping. Shipping bir ve assuming siz’ve covered diğer leaves bir gerçek gap. - Leaving detection out of recurring denetim. düzeltme o once ve never checking
yeniden guarantees bir plugin update veya bir pasted
http://image brings o back unnoticed.
Mixed bençerik — cheat sheet
Etkin ve pasif karşılaştırması
| Type | örnek kaynaklar | Browser behavior | Priority |
|---|---|---|---|
| Active | <script>, <link rel="stylesheet">, <iframe>, fetch/XMLHttpRequest, fonts, <object> | Blocked — breaks sayfa | düzelt ilk |
| Passive | <img>, <audio>, <video> ve onların kaynaklar | Warns / downgrades padlock; increasingly auto-upgraded veya blocked | düzelt sonraki |
Anchor bağlantı <a href="http://…"> | (bir navigation, değil bir sub-kaynak) | değil mixed bençerik at tümü | N/bir |
Detection stack
| Layer | araç | Sees |
|---|---|---|
| Per sayfa | Chrome DevTools console / Security panel | Exact blocked + warned kaynaklar on open sayfa |
| Whole site | Ahrefs site denetimi, Screaming Frog | her sayfa referencing http:// sub-kaynaklar |
| Production tail | Content-Security-Policy-Report-Only + reporting endpoint | Per-kullanıcı, per-sayfa, ve üçüncü-party-tag violations |
** CSP directives**
| Directive | ne yaptığı | Status |
|---|---|---|
upgrade-insecure-requests | Rewrites in-scope http:// sub-kaynak istekler -e https:// önce sending | güncel — bir -e kullan |
block-all-mixed-content | Blocks tümü HTTP assets on bir HTTPS sayfa | Deprecated / obsolete |
Content-Security-Policy-Report-Only | raporlar violations olmadan enforcing | güncel — kullan -e measure ilk |
yapmayın-confuse-bunlar
| düzeltmeler | Scope | |
|---|---|---|
upgrade-insecure-requests | Sub-kaynaklar secure sayfa loads | aynı-origin + in-scope; değil üçüncü-party top-level nav |
HSTS (Strict-Transport-Security) | Top-level navigation -e sizin site | Forces HTTPS hatta on ilk istek; değil bir mixed-bençerik düzelt |
bir-liner düzelt (CMS): DB arama-ve-replace http://yourdomain → https://yourdomain, o hâlde patch templates/plugins, o hâlde ayarla upgrade-insecure-requests.
bul mixed bençerik — snippets
1. tarama bir sayfa -den command line
Grab bir sayfa ve flag herhangi bir insecure src/href sub-kaynaklar left in 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 -Uniquebu yalnızca sees raw HTML — kaynaklar injected tarafından JavaScript won’t göster up, bu da tam olarak neden siz ayrıca kullan DevTools ve bir gerçek crawler.
2. Chrome DevTools Console — liste insecure kaynaklar on rendered sayfa
Paste -e console on HTTPS sayfa -e catch hatta 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 }));browser ayrıca logs blocked active mixed bençerik kendi başına olarak
Mixed Content: … This request has been blocked; the content must be served over HTTPS. — okuyun şunlar ilk.
3. Bookmarklet — bir-click console dump
Save olarak bir bookmark; click o on herhangi bir HTTPS sayfa -e console-log onun 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. CSP raporlamasını açma (üretimde algılama)
ekle bir rapor-yalnızca header bu nedenle gerçek visitors’ browsers söyle siz hakkında violations — dahil üçüncü-party tags ve sayfalar sizin tarama misses:
Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-report-endpointrapor-yalnızca raporlar olmadan enforcing, bu nedenle -ebilirsiniz size sorun safely önce
switching on upgrade-insecure-requests veya enforcement. ( modern eşdeğeri kullanır
report-to ile bir Reporting-Endpoints header.)
5. safety-net header (once siz’ve düzeltilmiş kaynak)
Content-Security-Policy: upgrade-insecure-requestsRemember o yapmaz upgrade üçüncü-party top-level navigation ve dır değil bir replacement bençin HSTS.
Recurring mixed-bençerik denetim SOP
çalıştır bu sonra HTTPS launches, CMS veya theme releases, tag-manager changes, ve on bir regular schedule bençin siteler whose bençerik changes frequently.
- tarama HTTPS sayfalar in raw ve rendered modes. Export insecure URLs -den
src,srcset, stylesheet, iframe, media, ve fetch/XHR istekler; ordinary HTTP anchor bağlantılar değildir mixed bençerik. - Collect browser evidence. Review DevTools on temsilci templates ve kullan
Content-Security-Policy-Report-Only-e capture violations triggered tarafından gerçek visitors ve üçüncü-party tags. - Classify her bulma. Mark o active veya passive, ilk-party veya üçüncü-party, static veya JavaScript-injected, ve identify template, database field, plugin, tag, veya vendor şu owns kaynak.
- düzelt kaynak reference. benşaret et o -e bir working HTTPS kaynak veya bir safe
relative URL. yapmayın assume changing
http://-ehttps://dır enough; verify destination aslında supports TLS. - kullan CSP olarak bir safety net. ekle
upgrade-insecure-requestsyalnızca sonra reviewing findings. o -ebilir reduce exposure, ama o yapmaz repair CMS record veya replace HSTS. - Re-tarama ve render. Active mixed-bençerik errors -meli olmak zero on tested templates; passive kaynaklar -meli ayrıca resolve üzerinde HTTPS olmadan fallback.
- Prevent recurrence. Correct originating template veya editor workflow, retain rapor-yalnızca collection nerede appropriate, ve assign yeni violations -e system owner.
Symptom → muhtemel neden ol → düzelt
| Symptom | muhtemel neden ol | ne -e inspect | düzelt |
|---|---|---|---|
| sayfa loses layout veya interaction sonra HTTPS launch | Blocked active bençerik, genellikle bir stylesheet, script, iframe, veya fetch istek | DevTools Console ve Network errors on affected template | Move kaynak -e bir valid HTTPS URL ve correct kaynak template veya tag |
| Padlock veya security indicator dır downgraded -iken sayfa hâlâ görünür usable | Passive image, audio, video, veya diğer upgradable bençerik | Rendered DOM, srcset, lazy-load attributes, CSS, ve browser warnings | Replace her insecure kaynak reference ve verify HTTPS asset döndürür successfully |
| sorun döndürür sonra bir CMS release | bir absolute HTTP URL kalır in database, theme, plugin, veya generated bençerik | Compare yeni violations tarafından template ve deployment; arama stored fields ve configuration | düzelt generator veya stored değer, o hâlde backfill affected bençerik |
| tarama dır temiz ama gerçek kullanıcılar hâlâ rapor failures | JavaScript, consent logic, ad tech, veya bir üçüncü-party tag injects istek yalnızca at runtime | CSP rapor-yalnızca events ve DevTools ile relevant consent/device state | Change veya kaldır responsible tag/vendor configuration ve retest şu state |
upgrade-insecure-requests dır present ama bir kaynak hâlâ fails | HTTP origin sahiptir no working HTTPS eşdeğeri, veya politika yapmaz kapsa şu navigation | Upgraded istek’s final URL, certificate, ve response | ana makine asset on HTTPS veya replace o; yapmayın ele al directive olarak bir proxy |
Mixed-bençerik release testler
test et 1: rendered template sweep
- Purpose: Catch active ve passive kaynaklar şu raw HTML alone misses.
- yöntem: Render bir temsilci URL -den her template ve interaction state; inspect Console ve Network output bençin insecure veya blocked istekler.
- beklenen sonuç: No sub-kaynak dır requested üzerinde HTTP ve no active bençerik dır blocked.
- başarısızlık trigger: herhangi bir mixed-bençerik warning, auto-upgrade başarısızlık, veya missing layout/function neden oldu tarafından bir blocked kaynak.
- sonraki action: Trace istek -e onun template, tag, plugin, veya stored field; düzelt kaynak ve rerun sweep.
test et 2: kaynak ve CSP comparison
- Purpose: Detect violations introduced yalnızca bençin gerçek visitors veya tarafından üçüncü parties.
- yöntem: Compare crawler findings ile
Content-Security-Policy-Report-Onlyevents, grouped tarafından blocked URL, sayfa template, directive, ve owner. - beklenen sonuç: No unexplained production-yalnızca violations kal; known noise dır documented ve excluded narrowly.
- başarısızlık trigger: bir repeatable violation absent -den tarama veya bir unowned üçüncü-party kaynak.
- sonraki action: Reproduce ziyaretçben state ve correct veya kaldır injecting integration.
test et 3: recurrence test et sonra publishing
- Purpose: Verify CMS no longer generates yeni insecure references.
- yöntem: Publish bir test et item aracılığıyla olağbir editoryal workflow, o hâlde tarama ve render o ile aynı kontroller kullanılan bençin production.
- beklenen sonuç: Generated markup ve loaded kaynaklar kullan valid HTTPS URLs.
- başarısızlık trigger: yeni sayfa recreates bir HTTP reference previously cleaned -den older bençerik.
- sonraki action: düzelt editor default, template, plugin, veya bençerik transform önce release proceeds.
kaynaklar worth sizin time
benim speaking
- daha iyi Safe -den Sorry ile HTTPS — SMX East 2016 (SlideShare) — benim deep-dive on TLS, yaygın HTTPS implementation failures, ve migration gotchas şu produce mixed bençerik in ilk place. (Standing disclaimer: o’s benim understanding of bunlar systems, ve adoption istatistikler in o dır -den 2016.)
benim related yazma
- Beginner’s rehber -e teknik SEO — nerede HTTPS ve mixed bençerik fit in bigger teknik picture.
-den yaklaşık industry
- ne dır mixed bençerik? (web.dev / Google) — canonical definition ve active-vs-passive split.
- düzeltme mixed bençerik (web.dev / Google) — adım-tarafından-adım: bulma o, düzeltme sub-kaynak URLs,
upgrade-insecure-requests, ve CSP reporting. - MDN —
upgrade-insecure-requests— precisely ne o upgrades, ne o yapmaz, ve neden o yapmaz replace HSTS. - MDN —
block-all-mixed-content— deprecated blocking directive, bençin -dığınızda inherit o. - MDN — Mixed bençerik — browser-behavior reference bençin blockable vs. upgradable kaynaklar.
- Enable HTTPS on sizin servers (web.dev / Google) — relative/protokol-relative URLs ve surrounding HTTPS setup rehberlik.
istatistikler worth alıntılanmaya değer
- Active mixed bençerik dır blocked tarafından default. Google: “en çok browsers zaten block bu type of bençerik tarafından default -e protect kullanıcılar.” — neden active mixed bençerik dır bir functional outage, değil bir warning. kaynak
- Active mixed bençerik dır greater threat. Google’ın kendi sıralama of two tiers: “Active mixed content poses a greater threat than passive mixed content.” — yapğru-sizes sizin triage sıra. kaynak
- Passive mixed bençerik dır no longer safely “allowed.” Google: “Until recently, passive mixed bençerik idi loaded in tümü browsers … bu now beginning -e change.” — the “images dır harmless” assumption dır expiring. kaynak
upgrade-insecure-requestsdeğildir bir substitute bençin HSTS. MDN states o plainly: o “does not replace theStrict-Transport-Security(HSTS) header.” — two controls solve farklı halves of sorun. kaynak- ~89% of web dır on HTTPS (W3Techs, 2026; yapğrula güncel figure), hangi
dır tam olarak neden leftover
http://sub-kaynaklar on bir otherwise-secure sayfa dır yaygın başarısızlık mode now — sayfalar dır HTTPS; cargo lags behind. Context via HTTPS hub.
test et yourself: Mixed bençerik
Five quick questions on mixed bençerik. seç bir yanıt her biri bençin, o hâlde kontrol et.
Değişiklik günlüğü
8 Ağu 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.
17 Tem 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.