Konten campuran

Apa itu konten campuran, mengapa konten campuran aktif diblokir sementara konten pasif memicu peringatan, serta cara mendeteksi dan memperbaiki sub-sumber daya tidak aman dalam skala besar melalui konsol browser, pelaporan CSP, upgrade-insecure-requests, block-all-mixed-content, dan penelusuran sumber yang dimunculkan kembali oleh CMS maupun teknologi iklan.

Pertama kali diterbitkan: 3 Jul 2026 · Terakhir diperbarui: 21 Agu 2026 · Advanced
Bahasa

Konten campuran terjadi saat halaman HTTPS memuat sub-sumber daya melalui HTTP. Taksonomi browser saat ini membaginya menjadi konten yang dapat ditingkatkan dan konten yang harus diblokir; pembagian lama aktif/pasif masih sesuai untuk sebagian besar jenis, dengan beberapa pengecualian: gambar berkemampuan CORS, kandidat srcset/picture, dan permintaan ke host berupa alamat IP harus diblokir, bukan ditingkatkan. Konten aktif—skrip, stylesheet, iframe, dan XMLHttpRequest/fetch—diblokir karena skrip yang disusupi dapat menulis ulang seluruh halaman; inilah penyebab utama situs rusak setelah migrasi HTTP→HTTPS, sehingga harus diperbaiki lebih dahulu. Konten pasif—gambar, audio, dan video—dahulu dimuat dengan indikator keamanan yang diturunkan, tetapi kini makin sering ditingkatkan otomatis atau diblokir. Tautan jangkar dan navigasi HTTP tingkat atas bukan konten campuran; unduhan tidak aman juga merupakan masalah terpisah. Temukan masalah di tiga lapisan: sumber yang diambil, keadaan hasil render/runtime, dan sesi pengguna nyata. Crawl situs HTTPS, periksa konsol Chrome DevTools—dengan redaksi yang bergantung pada browser dan versinya—atau kumpulkan pelanggaran Content-Security-Policy-Report-Only. Pastikan versi HTTPS benar-benar berfungsi sebelum mengarahkan setiap sub-sumber daya ke https://; gunakan jalur relatif atau relatif-protokol hanya setelah kepemilikan dan perilaku URL dasar terverifikasi. Header Content-Security-Policy: upgrade-insecure-requests menulis ulang permintaan sub-sumber daya http:// dalam cakupan, termasuk lintas origin, menjadi https:// sebelum dikirim dan sebelum pemeriksaan konten campuran/CSP. Tidak ada fallback HTTP jika peningkatan gagal. Direktif ini adalah jaring pengaman, bukan pengganti pembersihan sumber; tidak meningkatkan navigasi tingkat atas ke origin pihak ketiga, sehingga tidak menggantikan HSTS. Menempatkan direktif itu sendiri dalam mode pelaporan saja tidak berpengaruh; pantau dengan kebijakan pelaporan saja yang terpisah. Basis data CMS—cadangkan dan uji kering penggantian karena penggantian string naif dapat merusak data terserialisasi—beserta plugin, tema, service worker/cache, dan tag iklan/analitik merupakan sumber masalah berulang. Auditlah dalam skala besar dengan crawler dan pelaporan CSP, bukan halaman demi halaman.

TL;DR — Mixed konten adalah sebuah HTTPS halaman memuat sebuah sub-sumber daya di atas HTTP. saat ini browser/W3C taxonomy sorts ini ke dapat ditingkatkan dan dapat diblokir konten; lama active/passive split (digunakan below sebagai sebuah blast-radius framing) masih tracks itu divide untuk sebagian besar resource jenis, dengan exceptions — CORS-enabled images, srcset/picture candidates, dan IP-host permintaan adalah dapat diblokir bahkan though sebuah biasa img src adalah dapat ditingkatkan. Active (scripts, stylesheets, iframes, XMLHttpRequest/fetch, dan apa pun browser executes) adalah diblokir — sebuah tampered script dapat menulis ulang halaman — so ini merupakan launch-day regression untuk perbaiki pertama. Passive (images, audio, video) secara historis dimuat dengan sebuah downgraded indicator dan adalah kini semakin sering auto-ditingkatkan atau diblokir. Anchor tautan dan lainnya tingkat atas HTTP navigasi bukan konten campuran; neither adalah tidak aman downloads, yang adalah sebuah terkait tetapi terpisah boundary. Detect ini di seluruh tiga lapisan — sumber yang diambil, keadaan hasil render/runtime, dan pengguna nyata sessions — oleh crawling HTTPS situs, membaca Chrome DevTools console (persis wording adalah browser/versi spesifik), atau mengumpulkan Content-Security-Policy-Report-Only violations; perbaiki ini oleh memastikan sebuah versi HTTPS sebenarnya berfungsi, lalu pointing setiap sub-sumber daya di https:// (relative/protocol-relative paths adalah fine setelah Anda’ve verified kepemilikan dan URL dasar perilaku, tidak sebuah universal bawaan). konten-Security-Policy: upgrade-tidak aman-permintaan rewrites di-scope http:// permintaan sub-sumber daya (including cross-origin ones) untuk https:// sebelum mereka’re dikirim dan sebelum mixed-konten/CSP memeriksa jalankan — sebuah net, tidak sebuah substitute untuk memperbaiki sumber, dengan no HTTP fallback jika upgrade gagal, dan ini melakukan tidak upgrade tingkat atas navigasi untuk pihak ketiga origins, so ini tidak replace HSTS. Putting directive itself di laporkan-hanya mode adalah sebuah no-op — monitor dengan sebuah terpisah laporkan-hanya policy sebagai gantinya. CMS databases (back up dan dry-jalankan apa pun replacement — naive string-replace dapat corrupt serialized data), plugins, themes, service workers/caches, dan ad/analytics tags adalah recurring re-offenders — audit di scale, tidak halaman demi halaman.

HTTPS hub introduces konten campuran sebagai satu dari dua launch-day kegagalan modes dari sebuah migration ( lainnya menjadi redirects). ini merupakan deep dive ini poin untuk — persis resource tiers, detection stack, CSP directives, dan operational alasan ini mempertahankan coming back.

apa counts sebagai konten campuran — dan apa tidak

Mixed konten adalah scoped secara tepat: ini merupakan tentang sub-sumber dayas halaman memuat, tidak tentang tautan halaman berisi. 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.” (terjemahan) “sebuah halaman memiliki konten campuran ketika -nya initial HTML adalah dimuat di atas sebuah aman HTTPS connection, tetapi lainnya resources (such sebagai images, videos, stylesheets, dan scripts) adalah dimuat di atas sebuah tidak aman 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 itu reassures people falsely adalah anchor tag. sebuah <a href="http://…"> tautan untuk sebuah HTTP halaman adalah tidak konten campuran — ini navigates untuk sebuah baru document; ini tidak muat sebuah sumber daya tidak aman ke saat ini aman satu. itu’s benar dari apa pun tingkat atas navigasi untuk sebuah HTTP halaman, tidak hanya anchor clicks.

ini merupakan masih worth sending outbound tautan untuk HTTPS destinations. di bawah modern browser-bawaan Referrer-Policy (strict-origin-when-cross-origin), sebuah click dari sebuah HTTPS halaman untuk sebuah HTTP destination melakukan drop Referer header, yang dapat mangle referral analytics — tetapi itu perilaku adalah policy- dan browser-dependent, tidak sebuah universal aturan: sebuah halaman (atau sebuah upstream proxy/CDN) itu sets sebuah looser Referrer-Policy dapat masih kirim referrer pada itu downgrade. periksa actual Referrer-Policy di effect sebelum asserting bagaimana much referral data sebuah given situs loses — tetapi di apa pun kasus, itu’s sebuah terpisah masalah dari konten campuran, tidak mixed konten itself.

Active vs. passive: distinction itu sets Anda priorities

Modern browser dan W3C documentation classifies konten campuran primarily sebagai dapat ditingkatkan versus dapat diblokir konten — resource jenis browser akan silently retry di atas HTTPS versus ones ini refuses outright — alih-alih lama active/passive split. Active/passive adalah masih berguna shorthand untuk mengapa browser draw itu line (bagaimana much dari halaman resource dapat compromise), dan ini merupakan bagaimana Google’s own explainer frames ini, so ini merupakan dipertahankan below sebagai primary triage framing — hanya jangan treat ini sebagai saat ini official taxonomy ketika Anda perlu alasan tentang sebuah spesifik resource jenis; see exceptions setelah dua lists.

browser classify konten campuran oleh bagaimana much dari halaman sumber daya tidak aman dapat compromise. Google: “Active mixed content poses a greater threat than passive mixed content.” (terjemahan) “Konten campuran aktif poses sebuah greater threat daripada passive mixed konten.” itu single kalimat seharusnya drive Anda triage order.

Konten campuran aktif interacts dengan — dan dapat take di atas — seluruh halaman. Google describes ini sebagai “scripts, stylesheets, iframes, and any other code the browser can download and execute.” (terjemahan) “scripts, stylesheets, iframes, dan apa pun lainnya code browser dapat unduhan dan execute.” dalam praktik active list adalah:

  • <script src="http://…"> — worst kasus; sebuah intercepted script dapat menulis ulang entire DOM, exfiltrate form data, atau inject konten.
  • <link rel="stylesheet" href="http://…"> — CSS dapat hide, reposition, atau overlay apa pun, so ini merupakan treated sebagai active.
  • <iframe src="http://…"> — sebuah embedded tidak aman document di dalam Anda aman satu.
  • XMLHttpRequest / fetch() untuk http:// — tidak aman data halaman lalu acts pada.
  • Web fonts, <object>/<embed> resources, dan <link> variants itu pull di executable atau layout-controlling konten.

karena sebuah tampered active resource dapat menulis ulang halaman, “Most browsers already block this type of content by default to protect users.” (terjemahan) “sebagian besar browser sudah block ini jenis dari konten oleh bawaan untuk protect pengguna.” itu’s mengapa active mixed konten adalah apa visibly breaks hal setelah sebuah migration — sebuah diblokir stylesheet strips Anda CSS, sebuah diblokir script kills interactivity, sebuah diblokir iframe leaves sebuah hole. perbaiki active pertama. ini merupakan sebuah functional bug, tidak hanya sebuah security nag.

Passive (display) konten campuran — Google: “including images, video, and audio” (terjemahan) “including images, video, dan audio”“doesn’t interact with the rest of the page.” (terjemahan) “tidak interact dengan rest dari halaman.” sebuah intercepted image dapat menjadi swapped tetapi dapat’t seize document. So secara historis browser dimuat ini dan hanya downgraded 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.” (terjemahan) “Until recently, konten campuran pasif adalah dimuat di semua browser, karena blocking ini akan memiliki broken banyak situs web. ini merupakan kini beginning untuk perubahan.” direction dari travel di seluruh browser adalah menuju auto-upgrading passive resources untuk HTTPS tempat mungkin dan blocking apa dapat’t menjadi ditingkatkan, so “passive = tidak berbahaya” (terjemahan) “passive = tidak berbahaya” adalah no longer sebuah safe assumption untuk bangun pada.

Exceptions active/passive split tidak capture

dapat ditingkatkan/dapat diblokir line memiliki several exceptions itu jangan ikuti umum “images upgrade, scripts block” (terjemahan) “images upgrade, scripts block” pattern above — ini merupakan kasus itu sebenarnya trip people up dalam praktik:

  • CORS-enabled image permintaan adalah force-gagal, tidak ditingkatkan. sebuah biasa <img src="http://…"> adalah dapat ditingkatkan, tetapi sebuah image permintaan dibuat dengan crossorigin tetapkan adalah treated differently oleh mixed-konten algorithm dan gagal alih-alih silently upgrading.
  • srcset dan <picture> candidates adalah dapat diblokir, tidak dapat ditingkatkan. yang sama image, diminta melalui sebuah responsive-image mechanism alih-alih sebuah biasa src, falls ke dapat diblokir category — jangan assume setiap image rujukan behaves sama cara.
  • IP-address hosts adalah diblokir, tidak ditingkatkan, bahkan untuk sebuah otherwise-dapat ditingkatkan resource jenis. sebuah rujukan like http://203.0.113.5/logo.png tidak get automatic-upgrade treatment sebuah domain-hosted equivalent akan.
  • Nested contexts dan workers adalah di cakupan. Mixed-konten memeriksa apply di dalam iframes dan di dalam service worker/shared worker too, tidak hanya top document — sebuah worker mengambil sebuah tidak aman script adalah masih konten campuran.
  • Local dan loopback origins memiliki mereka own nuance. localhost, loopback addresses, dan file:// contexts adalah “potentially trustworthy origins” (terjemahan) “potentially trustworthy origins” di bawah spec bahkan tanpa TLS, so sebuah sederhana HTTP-vs-HTTPS heuristic tidak map cleanly onto local development environments.
  • tidak aman downloads adalah sebuah terkait tetapi terpisah boundary. sebuah unduhan initiated dari sebuah aman halaman di atas http:// adalah sebuah nyata risk, tetapi ini merupakan governed oleh -nya own unduhan-security handling, tidak sub-sumber daya mixed-konten aturan di ini bagian.
  • Top-tingkat HTTP navigasi masih bukan konten campuran, including anchor-tautan kasus above — itu’s sebuah property dari navigasi, tidak dari sebuah dimuat sub-sumber daya, however banyak dari ini lainnya exceptions apply.

Detecting konten campuran — seluruh stack

tidak ada single button, dan setiap lapisan below jawaban sebuah berbeda pertanyaan — sebuah bersih hasil di satu lapisan tidak jelas yang lain. Diagnose sumber yang diambil (apa raw HTML sebenarnya rujukan), keadaan hasil render/runtime (apa browser permintaan once ini merupakan parsed halaman dan jalankan -nya scripts), dan pengguna nyata sessions (apa happens untuk sebuah pengunjung behind sebuah consent banner, sebuah geo-redirect, sebuah login wall, atau sebuah pihak ketiga tag itu hanya fires di bawah spesifik conditions) separately. Lapisan ini berkembang dari “one page” (terjemahan) “satu halaman tertentu” menjadi “whole site” (terjemahan) “keseluruhan situs web”:

  1. ** Chrome DevTools console** (keadaan hasil render/runtime). muat HTTPS halaman dan open console. diblokir konten campuran aktif logs sebuah message along lines dari “Mixed Content: The page … was loaded over HTTPS, but requested an insecure … This request has been blocked; the content must be served over HTTPS.” (terjemahan) “Mixed konten: halaman … adalah dimuat di atas HTTPS, tetapi diminta sebuah tidak aman … ini permintaan telah diblokir; konten harus menjadi disajikan di atas HTTPS.” Passive itu gets dimuat logs sebuah warning alih-alih sebuah block. Security panel (atau Issues tab) groups ini up per halaman. Fast untuk spot-memeriksa dan untuk memastikan sebuah spesifik perbaiki — tetapi treat persis message wording, panel layout, dan bahkan yang resource jenis get diblokir sebagai browser- dan versi-spesifik; ini merupakan confirmed terhadap Chrome sebagai dari 2026-07 dan Anda harus verify saat ini wording pada actual browser/versi Anda’re diagnosing alih-alih quoting ini sebagai sebuah fixed UI string, dan expect Firefox, Safari, dan Edge untuk differ.

  2. sebuah situs crawler (sumber yang diambil, dalam skala besar). DevTools adalah per-halaman; sebuah crawl adalah situs-wide. Ahrefs situs Audit dan Screaming Frog both flag halaman itu rujukan http:// sub-sumber dayas pada sebuah HTTPS situs — satu-satunya realistis cara untuk temukan mixed konten di seluruh thousands dari URLs. ini merupakan primary alat untuk sebuah audit, tetapi ini merupakan masih membaca sumber: sebuah crawl passing bersih tidak prove dirender halaman atau sebuah nyata session adalah bersih too — record yang browser/alat/versi produced sebuah given hasil alih-alih pelaporan satu unqualified pass/fail.

  3. CSP violation pelaporan (pengguna nyata sessions). Anda dapat membuat browser dari nyata pengunjung laporkan konten campuran back untuk Anda, yang catches resources itu hanya muat pada certain halaman, untuk certain pengguna, di bawah certain consent states, atau dari pihak ketiga tags Anda tidak control — lapisan neither sebuah crawl nor sebuah single DevTools periksa dapat 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-Only directive by adding it as a response header for your site.” (terjemahan) “Anda dapat gunakan konten security policy untuk kumpulkan laporan dari konten campuran pada Anda situs. untuk enable ini fitur, atur direktif Content-Security-Policy-Report-Only dengan menambahkannya sebagai header respons untuk Anda situs.” laporkan-hanya mode laporan violations tanpa enforcing policy, so Anda dapat mengukur masalah di production sebelum Anda turn pada blocking. ( mechanism adalah modern report-to / Reporting-Endpoints header, atau lama report-uri. Note ini merupakan sebuah berbeda, umum-purpose laporkan-hanya policy daripada upgrade-insecure-requests itself — putting itu spesifik directive di laporkan-hanya mode tidak berfungsi, sebagai covered below.)

Evidence for this claim upgrade-insecure-requests in a Content-Security-Policy-Report-Only header is ignored. Scope: Content Security Policy upgrade-insecure-requests processing Confidence: high · Verified: Upgrade Insecure Requests

gunakan semua tiga: DevTools untuk verify sebuah dirender halaman, sebuah crawler untuk inventory diambil sumber, CSP laporan untuk catch nyata-session panjang tail itu hanya menampilkan up di wild. satu crawl passing adalah evidence tentang sumber, tidak sebuah guarantee itu setiap consent state, ad-tech variant, personalization branch, atau worker adalah bersih.

memperbaiki di sumber

nyata perbaiki starts sebelum Anda touch sebuah single rujukan: verify HTTPS equivalent sebenarnya exists, presents sebuah valid certificate, dan mengembalikan konten Anda expect — jangan assume swapping scheme adalah safe hanya karena domain resolves. Once itu’s confirmed, setiap sub-sumber daya rujukan seharusnya resolve di atas HTTPS. Options below adalah di rough order dari preference, tetapi setiap satu masih depends pada kepemilikan dan konteks, tidak hanya string Anda jenis:

  • Absolute HTTPS URLs — perubahan http://cdn.example.com/app.js untuk https://cdn.example.com/app.js. Explicit dan unambiguous; safest bawaan ketika Anda’re tidak certain tentang serving konteks below.
  • Root-relative atau relative paths — untuk resources Anda own pada yang sama situs, /assets/app.js inherits halaman’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.” (terjemahan) “pastikan intrasite URLs dan external URLs jangan depend pada sebuah spesifik protocol. gunakan jalur relatif atau hilangkan protokol seperti pada //example.com/something.js.” Treat ini sebagai bersyarat, tidak sebuah universal recommendation: ini hanya holds once Anda’ve confirmed Anda sebenarnya own resource (sebuah relative path untuk sebuah pihak ketiga asset tidak membuat sense), itu halaman’s nyata base URL resolves cara Anda expect (sebuah <base> tag, sebuah proxied path, atau sebuah embedded/AMP konteks dapat perubahan apa “relative” (terjemahan) “relative” berarti), dan itu tidak ada downstream reconstructs URL di sebuah cara itu reintroduces http:// — client-side code membangun sebuah URL dari window.location atau sebuah stored absolute nilai, misalnya.
  • Protocol-relative URLs (//example.com/something.js) masih berfungsi, tetapi mereka’re tidak preferred universal perbaiki — gate them pada yang sama kepemilikan/URL dasar memeriksa above, tidak hanya habit. pada sebuah semua-HTTPS web, sebuah explicit https:// adalah biasanya clearer dan menghindari surprises jika file adalah ever opened dari sebuah non-HTTP konteks; reach untuk protocol-relative hanya tempat Anda memiliki sebuah spesifik alasan tidak untuk hard-code scheme.

dalam skala besar Anda almost tidak pernah hand-edit templates satu oleh satu — tetapi jangan jalankan sebuah unguarded database string-replacement terhadap production either. http://yourdomainhttps://yourdomain looks like sebuah sederhana temukan-dan-replace, dan untuk biasa-text fields ini sering adalah safe, tetapi CMS konten dapat menjadi serialized atau structured (PHP serialized arrays, JSON blobs, block-editor data) tempat sebuah naive substring swap corrupts record alih-alih memperbaiki ini. gunakan application-aware tooling itu understands serialization format, back up database pertama, dan dry-jalankan replacement so Anda dapat review affected rows sebelum committing. lalu perbaiki handful dari template/config files itu emit URLs; crawler dan CSP laporan mop up stragglers.

upgrade-insecure-requests: safety net (dan -nya limits)

proactive backstop adalah sebuah konten-Security-Policy directive. web.dev: “The upgrade-insecure-requests CSP directive instructs the browser to upgrade insecure URLs before making network requests.” (terjemahan) “ direktif CSP upgrade-insecure-requests memerintahkan browser untuk meningkatkan URL yang tidak aman sebelum membuat permintaan jaringan.” Tetapkan header:

Content-Security-Policy: upgrade-insecure-requests

Per MDN, ini “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).” (terjemahan) “instructs pengguna agents untuk treat semua dari sebuah situs’s URL tidak aman (itu disajikan di atas HTTP) sebagai though mereka telah replaced dengan URL aman (itu disajikan di atas HTTPS).” Concretely, MDN says ini upgrades: “requests to load resources (such as images, scripts, or fonts),” (terjemahan) “permintaan untuk muat resources (such sebagai images, scripts, atau fonts),”; “navigation requests (such as link targets) which are same-origin with the document,” (terjemahan) “permintaan navigasi—seperti tujuan tautan—yang memiliki origin sama dengan dokumen,”; “navigation requests in nested browsing contexts, such as iframes,” (terjemahan) “permintaan navigasi dalam konteks penjelajahan bersarang, seperti iframe,”; dan “form submissions.” (terjemahan) “pengiriman formulir.” 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

dua operational detail penting beyond itu quote. pertama, sub-sumber daya upgrade bukan limited untuk origin yang sama permintaan — ini merupakan navigasi upgrade itu’s origin yang sama-hanya per quote above; biasa permintaan sub-sumber daya get rewritten di seluruh origins too, so sebuah CDN-hosted script atau sebuah pihak ketiga font gets ditingkatkan, tidak hanya sama-situs assets. kedua, menulis ulang happens sebelum browser’s mixed-konten dan CSP memeriksa evaluate permintaan, yang adalah mengapa sebuah resource itu akan otherwise menjadi diblokir outright sebagai konten campuran dapat muat cleanly once ini merupakan telah ditingkatkan — upgrade pre-empts block.

tiga limits Anda harus tidak paper di atas:

  • ini melakukan tidak upgrade pihak ketiga tingkat atas navigasi. MDN: “However, top-level navigation requests whose target is a different origin will not be upgraded.” (terjemahan) “However, tingkat atas navigasi permintaan whose target adalah sebuah berbeda origin akan tidak menjadi ditingkatkan.” karena itu, ini merupakan secara eksplisit tidak sebuah replacement untuk HSTS: “The upgrade-insecure-requests directive 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.” (terjemahan) “ direktif upgrade-insecure-requests tidak menjamin bahwa pengguna yang mengunjungi situs Anda melalui tautan di situs pihak ketiga akan dialihkan ke HTTPS untuk navigasi tingkat atas; karena itu, direktif tersebut tidak menggantikan header Strict-Transport-Security (HSTS).” (Perbedaan ini dijelaskan lebih lanjut di bawah.)
  • ini merupakan sebuah net, tidak sebuah perbaiki, dan ini tidak fall back. jika resource benar-benar bukan tersedia di atas HTTPS, ditingkatkan permintaan hanya gagal outright — ini melakukan tidak fall back untuk original http:// versi. membersihkan sumber adalah masih job; directive covers apa Anda missed, tidak apa’s benar-benar broken.
  • laporkan-hanya mode tidak perform upgrade — ini merupakan sebuah no-op. Putting upgrade-insecure-requests di dalam sebuah Content-Security-Policy-Report-Only header adalah ignored oleh browser: tidak ada gets rewritten, dan tidak ada gets reported untuk ini either. jika Anda ingin visibilitas ke apa upgrade akan affect sebelum Anda enforce ini, jalankan sebuah terpisah, umum-purpose laporkan-hanya policy itu laporan disallowed http:// destinations (yang sama default-src https: laporkan-hanya approach digunakan untuk detection above) — Anda dapat’t get itu visibilitas oleh membuat upgrade-insecure-requests itself laporkan-hanya.

block-all-mixed-content — mostly historical

There’s sebuah companion directive, block-all-mixed-content, yang — per MDN — “prevents loading any assets over HTTP when the page uses HTTPS,” (terjemahan) “mencegah memuat apa pun assets di atas HTTP ketika halaman menggunakan HTTPS,” including “both blockable and upgradable mixed content,” (terjemahan) “both dapat diblokir dan dapat ditingkatkan konten campuran,” dan applies untuk iframes too. dalam praktik ini merupakan telah superseded. MDN marks ini deprecated dan “obsolete in the specification,” (terjemahan) “obsolete di specification,” noting: “Content that isn’t blocked is now always upgraded to a secure connection, so this directive is not needed.” (terjemahan) “konten itu bukan diblokir adalah kini selalu ditingkatkan untuk sebuah aman connection, so ini directive adalah tidak needed.” Reach untuk upgrade-insecure-requests; treat block-all-mixed-content sebagai legacy Anda mungkin inherit, tidak sesuatu untuk deploy baru. jika Anda sudah kirim upgrade-insecure-requests, block-all-mixed-content memiliki tidak ada left untuk melakukan untuk ditingkatkan permintaan — upgrade menulis ulang happens pertama, so oleh time sebuah block-semua periksa akan jalankan, permintaan memiliki sudah telah ditingkatkan (atau memiliki sudah gagal). ini merupakan tidak hanya legacy; ini merupakan redundant wherever UIR adalah sudah deployed.

Evidence for this claim block-all-mixed-content is deprecated and obsolete for new deployment. Scope: legacy CSP directives Confidence: high · Verified: CSP: block-all-mixed-content

mengapa Anda CMS mempertahankan reintroducing ini

Mixed konten bukan sebuah satu-time cleanup — ini recurs, karena several sistem secara diam-diam re-inject http:// URLs setelah Anda think Anda’re done:

  • ** konten database.** di WordPress, Drupal, dan sebagian besar CMSes, editors paste images dan embeds dengan absolute http:// URLs straight ke post bodies. itu live di database, tidak di sebuah template, so sebuah code-tingkat perbaiki tidak pernah touches them — hence DB search-dan-replace.
  • Themes dan plugins. sebuah theme atau plugin itu hard-codes sebuah http:// asset URL (sebuah font, sebuah script, sebuah background image) reintroduces konten campuran pada setiap halaman ini renders, dan sebuah plugin update dapat bring ini back setelah Anda’ve cleaned ini.
  • Ad tech, analytics, dan pihak ketiga tags. Tag managers, ad networks, chat widgets, dan analytics snippets muat mereka own sub-sumber dayas — dan jika sebuah vendor’s tag masih panggilan http://, ini merupakan konten campuran Anda dapat’t perbaiki di Anda own codebase. ini merupakan exactly panjang tail CSP pelaporan adalah untuk; durable perbaiki adalah pressing vendor untuk sajikan di atas HTTPS (atau dropping tag). jika sebuah vendor memiliki no berfungsi HTTPS endpoint, durable choices adalah yang sama tiga: get them untuk perbaiki ini, replace dependency, atau drop ini — there bukan sebuah fourth option itu mempertahankan tidak aman versi menjalankan safely.
  • Service workers dan caches. sebuah service worker dapat cache sebuah respons (atau permintaan itself) itu masih poin di http://, dan ini’ll pertahankan serving itu stale rujukan pada repeat visits bahkan setelah Anda perbaiki sumber. Reproduce sebuah suspected perbaiki di sebuah incognito/uncached session sebelum concluding ini didn’t berfungsi, dan membuat sure sebuah deploy itu perubahan reURL sumber juga bumps service worker/cache versi so stale entries get evicted alih-alih replayed.
  • Hard-coded http:// di old konten dan email/print templates itu get reused.

operational takeaway: bake detection ke sebuah recurring audit (crawler + CSP laporan), tidak sebuah launch-day checklist Anda jalankan once.

bagaimana konten campuran interacts dengan HSTS

Mixed konten dan HSTS solve adjacent tetapi berbeda masalah, dan conflating them adalah sebuah umum mistake:

  • upgrade-insecure-requests fixes sub-sumber dayas Anda own aman halaman permintaan — ini upgrades images/scripts/iframes halaman pulls di.
  • HSTS (Strict-Transport-Security) forces * tingkat atas navigasi untuk Anda situs* onto HTTPS — bahkan very pertama permintaan, sebelum apa pun redirect fires — dan defends terhadap SSL-stripping. Google frames HSTS sebagai sebuah cara untuk “avoid the cost of the 301 redirect” (terjemahan) “hindari cost dari 301 redirect” dan untuk “defeat attacks like SSL Stripping.” (terjemahan) “defeat attacks like SSL Stripping.”

mereka jangan substitute untuk setiap lainnya. sebagai 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.” (terjemahan) “akan tidak ensure itu pengguna visiting Anda situs via tautan pada pihak ketiga situs akan menjadi ditingkatkan untuk HTTPS untuk tingkat atas navigasi dan thus melakukan tidak replace header Strict-Transport-Security (HSTS).” Konfigurasi yang diperkuat sepenuhnya menggunakan keduanya: upgrade-insecure-requests (atau bersih URL sumber) so aman halaman memiliki no tidak aman cargo, dan HSTS so nobody reaches situs di atas HTTP di pertama place. dan usual HSTS caution masih 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,” (terjemahan) “jangan enable HSTS until Anda’re certain Anda situs operation adalah robust enough untuk hindari ever deploying HTTPS dengan certificate validation errors,” dan preloading adalah close untuk sebuah satu-cara door.

melakukan konten campuran hurt SEO directly?

Lead dengan langsung effects, karena mereka’re ones Anda sebenarnya control: mixed konten adalah pertama sebuah security dan functional masalah. diblokir active mixed konten breaks rendering dan interactivity outright — sebuah missing stylesheet atau script adalah sebuah nyata regression regardless dari apa sebuah mesin pencari membuat dari ini. itu’s alasan enough untuk perbaiki ini sebelum Anda think tentang rankings di semua.

Konsekuensi SEO memang ada, tetapi bersyarat, bukan dampak langsung atau jaminan. Panduan resmi Google saat ini tidak menetapkan bahwa memperbaiki konten campuran memberi peningkatan peringkat langsung. Sinyal peringkat HTTPS didasarkan pada skema URL—apakah URL diawali https://—bukan pemeriksaan kebersihan setiap sub-sumber daya; satu gambar tidak aman tidak serta-merta menghilangkan “the HTTPS signal” (terjemahan) “sinyal HTTPS”. Namun, dampak lanjutan tetap dapat terjadi tergantung pada bagian yang rusak. Jika Googlebot merender halaman yang CSS atau JavaScript-nya diblokir sebagai konten campuran, Google dapat mengindeks versi yang rusak atau tidak lengkap. Indikator keamanan yang diturunkan juga dapat merusak kepercayaan, keterlibatan, dan konversi pengguna meskipun peringkat tidak berubah. Preferensi umum Google untuk URL kanonis HTTPS pun bersyarat: sertifikat tidak valid, dependensi tidak aman, pengalihan HTTPS-ke-HTTP, atau sinyal kanonis yang bertentangan dapat mengubah URL yang dipilih tanpa bergantung khusus pada konten campuran. Verifikasi dampak rendering, pengindeksan, kanonikalisasi, dan analitik pada halaman Anda sendiri; jangan menjanjikannya sebagai hasil universal. Perbaiki konten campuran untuk security dan functional alasan pertama.

ini sits di dalam broader HTTPS untuk SEO topic, yang covers migration playbook, peringkat-signal weight, dan HSTS di full; jika Anda’re juga debugging certificate itself (chain errors, expiry, DV/OV/EV), itu’s sebuah sibling deep dive.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.