Mixed Nội dung

Điều gì mixed nội dung là, vì sao active mixed nội dung nhận blocked trong khi passive nhận warned về, và cách detect và cách sửa insecure sub-các tài nguyên tại quy mô — đó trình duyệt console, CSP reporting, upgrade-insecure-các yêu cầu, block-all-mixed-nội dung, và cách CMSes và quảng cáo tech reintroduce điều này.

Xuất bản lần đầu: 3 thg 7, 2026 · Cập nhật lần cuối: 8 thg 8, 2026 · Advanced
Ngôn ngữ

Mixed nội dung là an HTTPS trang loading một sub-tài nguyên over HTTP. Các trình duyệt' hiện tại taxonomy là upgradable versus blockable; đó older active/passive split vẫn tracks đó cho hầu hết types, với exceptions (CORS-enabled images, srcset/picture, và IP-host các yêu cầu là blockable, không upgradable). Active mixed nội dung — scripts, stylesheets, iframes, XMLHttpRequest/fetch — là blocked outright vì một tampered script có thể rewrite đó toàn bộ trang, so đây là điều gì thực ra breaks một site sau an HTTP→HTTPS migration; cách sửa điều này đầu tiên. Passive mixed nội dung — images, audio, video — trong lịch sử loaded với một downgraded padlock và là hiện tại increasingly auto-upgraded hoặc blocked cũng. Anchor links và other top-cấp độ HTTP navigation không phải mixed nội dung, và neither là insecure downloads (một related, tách biệt boundary). Tìm điều này trên fetched nguồn, được kết xuất/runtime state, và real-người dùng sessions: crawl đó HTTPS site, watch đó Chrome DevTools console (chính xác wording là trình duyệt/version cụ thể), hoặc collect Nội dung-Security-Policy-Báo cáo-Chỉ violations; cách sửa điều này by đầu tiên confirming đó HTTPS tương đương thực ra hoạt động, thì pointing mỗi sub-tài nguyên tại https:// (relative/giao thức-relative paths chỉ sau verifying quyền sở hữu và base-URL behavior). Đó Nội dung-Security-Policy: upgrade-insecure-các yêu cầu header rewrites trong-phạm vi http:// sub-tài nguyên các yêu cầu — including cross-origin ones — để https:// trước họ là đã gửi và trước mixed-nội dung/CSP kiểm tra chạy; điều này có không HTTP fallback nếu đó upgrade fails, đây là một safety net thay vì một substitute cho cleaning đó nguồn, điều này không upgrade top-cấp độ navigation để bên thứ ba origins (so điều này không một replacement cho HSTS), và setting đó directive itself trong báo cáo-chỉ chế độ là một không-op — monitor với một tách biệt báo cáo-chỉ policy thay vì. CMS databases (lại lên và dry-chạy replacements — naive string-replace có thể corrupt serialized dữ liệu), plugin/themes, service workers/caches, và quảng cáo/analytics tags là đó thông thường re-offenders; audit tại quy mô với một crawler và CSP reporting thay vì trang by trang.

TL;DR — Mixed nội dung là an HTTPS trang loading một sub-tài nguyên over HTTP. Đó hiện tại trình duyệt/W3C taxonomy sorts này vào upgradableblockable nội dung; đó older active/passive split (dùng dưới as một blast-radius cách diễn đạt) vẫn tracks đó divide cho hầu hết tài nguyên types, với exceptions — CORS-enabled images, srcset/picture candidates, và IP-host các yêu cầu là blockable mặc dù một đơn giản img src là upgradable. Active (scripts, stylesheets, iframes, XMLHttpRequest/fetch, và bất cứ điều gì đó trình duyệt executes) là blocked — một tampered script có thể rewrite đó trang — so đây là đó launch-day regression để cách sửa đầu tiên. Passive (images, audio, video) trong lịch sử loaded với một downgraded indicator và là hiện tại increasingly auto-upgraded hoặc blocked. Anchor links và other top-cấp độ HTTP navigation không mixed nội dung; neither là insecure downloads, mà là một related nhưng tách biệt boundary. Detect điều này trên three layers — fetched nguồn, được kết xuất/runtime state, và real người dùng sessions — by crawling đó HTTPS site, reading đó Chrome DevTools console (chính xác wording là trình duyệt/version cụ thể), hoặc collecting Content-Security-Policy-Report-Only violations; cách sửa điều này by confirming an HTTPS tương đương thực ra hoạt động, thì pointing mỗi sub-tài nguyên tại https:// (relative/giao thức-relative paths là fine khi bạn đã verified quyền sở hữu và base-URL behavior, không một universal default). Content-Security-Policy: upgrade-insecure-requests rewrites trong-phạm vi http:// sub-tài nguyên các yêu cầu (including cross-origin ones) để https:// trước họ là đã gửi và trước mixed-nội dung/CSP kiểm tra chạy — một net, không một substitute cho sửa đó nguồn, với không HTTP fallback nếu đó upgrade fails, và điều này làm không upgrade top-cấp độ navigation để bên thứ ba origins, so điều này không replace HSTS. Putting đó directive itself trong báo cáo-chỉ chế độ là một không-op — monitor với một tách biệt báo cáo-chỉ policy thay vì. CMS databases (lại lên và dry-chạy bất kỳ replacement — naive string-replace có thể corrupt serialized dữ liệu), plugin, themes, service workers/caches, và quảng cáo/analytics tags là đó recurring re-offenders — audit tại quy mô, không trang by trang.

HTTPS hub introduces mixed nội dung as một của hai launch-day thất bại modes của migration ( khác là các chuyển hướng). Đây là deep dive nó points để — chính xác tài nguyên tiers, detection stack, CSP directives, và operational reasons nó giữ coming lại.

Điều gì được tính as mixed nội dung — và Điều gì không

Mixed nội dung là scoped precisely: đây là về sub-các tài nguyên đó trang loads, không về links đó trang contains. Google 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.” (bản dịch) «MỘT trang có mixed nội dung khi của nó ban đầu HTML là loaded over một secure HTTPS connection, nhưng other các tài nguyên (such as images, videos, stylesheets, và scripts) là 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

trap đó reassures mọi người falsely là anchor tag. <a href="http://…"> link để HTTP trang là không mixed nội dung — nó navigates để new document; nó không load insecure tài nguyên vào hiện tại secure một. đó đúng của bất kỳ top-cấp độ navigation để HTTP trang, không chỉ anchor clicks.

nó vẫn worth sending outbound links để HTTPS destinations. Dưới modern trình duyệt-default Referrer-Policy (strict-origin-when-cross-origin), nhấp từ HTTPS trang để HTTP đích làm drop Referer header, mà có thể mangle referral phân tích — nhưng đó behavior là policy- và trình duyệt-phụ thuộc, không universal rule: trang (hoặc upstream proxy/CDN) đó sets looser Referrer-Policy có thể vẫn gửi referrer on đó downgrade. kiểm tra thực tế Referrer-Policy trong effect trước khi asserting Cách nhiều referral dữ liệu được cho trang web loses — nhưng trong bất kỳ case, đó tách biệt vấn đề từ mixed nội dung, không mixed nội dung itself.

Active so với. passive: phân biệt đó sets của bạn priorities

Modern trình duyệt và W3C tài liệu classifies mixed nội dung primarily as upgradable versus blockable nội dung — tài nguyên types trình duyệt sẽ silently retry over HTTPS versus ones nó từ chối outright — thay vì older active/passive split. Active/passive là vẫn hữu ích shorthand cho Vì sao các trình duyệt draw đó line (Cách nhiều của trang tài nguyên có thể compromise), và nó Cách Google own explainer frames nó, so nó kept dưới as chính triage cách diễn đạt — chỉ không treat nó as hiện tại chính thức taxonomy Khi bạn cần reason về cụ thể tài nguyên loại; see exceptions sau khi hai lists.

Các trình duyệt classify mixed nội dung by cách nhiều of đó trang đó insecure tài nguyên có thể compromise. Google: “Active mixed content poses a greater threat than passive mixed content.” (bản dịch) «Active mixed nội dung poses một greater threat hơn passive mixed nội dung.» Đó single sentence nên drive của bạn triage order.

Active mixed nội dung interacts với — và có thể take over — đó toàn bộ trang. Google mô tả điều này as “scripts, stylesheets, iframes, and any other code the browser can download and execute.” (bản dịch) «scripts, stylesheets, iframes, và bất kỳ other code đó trình duyệt có thể download và execute.» Trong thực tế đó active list là:

  • <script src="http://…"> — worst case; intercepted script có thể rewrite đểàn bộ DOM, exfiltrate form dữ liệu, hoặc inject nội dung.
  • <link rel="stylesheet" href="http://…"> — CSS có thể hide, reposition, hoặc overlay bất cứ điều gì, so nó được xem như active.
  • <iframe src="http://…"> — embedded insecure document bên trong của bạn secure một.
  • XMLHttpRequest / fetch() để http:// — insecure dữ liệu trang sau đó acts on.
  • Web fonts, <object>/<embed> các tài nguyên, và <link> variants đó pull trong executable hoặc layout-controlling nội dung.

Vì một tampered active tài nguyên có thể rewrite đó trang, “Most browsers already block this type of content by default to protect users.” (bản dịch) «Hầu hết các trình duyệt đã block này loại of nội dung theo mặc định để bảo vệ người dùng.» đó là vì sao active mixed nội dung là điều gì visibly breaks điều sau một migration — một blocked stylesheet strips của bạn CSS, một blocked script kills interactivity, một blocked iframe leaves một lỗ hổng. Cách sửa active đầu tiên. đây là một functional bug, không chỉ một security nag.

Passive (display) mixed nội dung — Google: “including images, video, and audio” (bản dịch) «including images, video, và audio»“doesn’t interact with the rest of the page.” (bản dịch) «không interact với đó rest of đó trang.» An intercepted image có thể là đã đổi nhưng không thể seize đó document. So trong lịch sử các trình duyệt loaded điều này và chỉ 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.” (bản dịch) «Until recently, passive mixed nội dung đã là loaded trong all các trình duyệt, vì blocking điều này sẽ có hỏng nhiều websites. Này là hiện tại beginning để thay đổi.» Đó direction of travel trên các trình duyệt là toward auto-upgrading passive các tài nguyên để HTTPS nơi có thể và blocking điều gì không thể là upgraded, so “passive = harmless” (bản dịch) «passive = harmless» là không lâu hơn một safe assumption để xây dựng on.

Exceptions active/passive split không capture

Đó upgradable/blockable line có several exceptions đó không follow đó chung “images upgrade, scripts block” (bản dịch) «images upgrade, scripts block» pattern trên — những là đó cases đó thực ra trip mọi người lên trong thực tế:

  • CORS-enabled image các yêu cầu là force-failed, không upgraded. An ordinary <img src="http://…"> là upgradable, nhưng an image yêu cầu đã làm với crossorigin set là treated differently by đó mixed-nội dung algorithm và fails thay vì silently upgrading.
  • srcset<picture> candidates là blockable, không upgradable. Đó giống nhau image, requested qua một responsive-image mechanism thay vì một đơn giản src, falls vào đó blockable category — không assume mỗi image reference behaves đó giống nhau way.
  • IP-address hosts là blocked, không upgraded, ngay cả cho an nếu không-upgradable tài nguyên loại. MỘT reference như http://203.0.113.5/logo.png không nhận đó tự động-upgrade treatment một domain-hosted tương đương sẽ.
  • Nested contexts và workers là trong phạm vi. Mixed-nội dung kiểm tra apply bên trong iframes và bên trong service/shared workers cũng, không chỉ đó top document — một worker fetching an insecure script là vẫn mixed nội dung.
  • Local và loopback origins có của họ own nuance. localhost, loopback addresses, và file:// contexts là “potentially trustworthy origins” (bản dịch) «potentially trustworthy origins» dưới đó spec ngay cả không có TLS, so một đơn giản HTTP-so với-HTTPS heuristic không map cleanly onto local development environments.
  • Insecure downloads là một related nhưng tách biệt boundary. MỘT download initiated từ một secure trang over http:// là một real risk, nhưng đây là governed by của nó own download-security xử lý, không đó sub-tài nguyên mixed-nội dung rules trong này section.
  • Top-cấp độ HTTP navigation vẫn không mixed nội dung, including đó anchor-link case trên — đó là một thuộc tính of navigation, không of một loaded sub-tài nguyên, tuy nhiên nhiều of những other exceptions apply.

Detecting mixed nội dung — toàn bộ stack

có không single button, và mỗi layer dưới các câu trả lời khác câu hỏi — sạch kết quả tại một layer không clear others. Diagnose fetched nguồn (Điều gì thô HTML thực ra references), được kết xuất/runtime state (Điều gì trình duyệt các yêu cầu sau khi nó parsed trang và chạy của nó scripts), và thực người dùng sessions (Điều gì happens cho khách truy cập behind consent banner, geo-chuyển hướng, login wall, hoặc thứ ba-party tag đó chỉ fires dưới cụ thể conditions) riêng. Layer những điều này từ “một trang” để “toàn bộ site”:

  1. Đó Chrome DevTools console (được kết xuất/runtime state). Load đó HTTPS trang và open đó console. Blocked active mixed nội dung logs một message along đó lines 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.” (bản dịch) «Mixed Nội dung: Đó trang … đã là loaded over HTTPS, nhưng requested an insecure … Này yêu cầu đã được blocked; đó nội dung phải được phân phối over HTTPS.» Passive đó nhận loaded logs một warning thay vì một block. Đó Security panel (hoặc đó Các vấn đề tab) groups điều này lên theo trang. Fast cho spot-kiểm tra và cho confirming một cụ thể cách sửa — nhưng treat đó chính xác message wording, panel layout, và ngay cả mà tài nguyên types nhận blocked as trình duyệt- và version-cụ thể; này đã là confirmed so với Chrome as of 2026-07 và bạn nên verify hiện tại wording on đó thực tế trình duyệt/version bạn là diagnosing thay vì quoting điều này as một fixed UI string, và expect Firefox, Safari, và Edge để differ.

  2. ** trang web crawler** (fetched nguồn, tại quy mô). DevTools là theo-trang; crawl là trang web-wide. Ahrefs trang web Audit và Screaming Frog cả hai flag các trang đó reference http:// sub-các tài nguyên on HTTPS trang web — chỉ realistic way để tìm mixed nội dung trên thousands của các URL. Đây là chính tool cho audit, nhưng nó vẫn reading nguồn: crawl passing sạch không prove được kết xuất trang hoặc thực session là sạch cũng — record mà trình duyệt/tool/version produced được cho kết quả thay vì reporting một unqualified truyền/fail.

  3. CSP violation reporting (real người dùng sessions). Bạn có thể làm đó các trình duyệt of real khách truy cập báo cáo mixed nội dung lại để bạn, mà catches các tài nguyên đó chỉ load on certain các trang, cho certain người dùng, dưới certain consent trạng thái, hoặc từ bên thứ ba tags bạn không control — đó layer neither một crawl nor một single DevTools kiểm tra có thể 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.” (bản dịch) «Bạn có thể dùng nội dung security policy để collect các báo cáo of mixed nội dung trên trang web của bạn. Để enable này feature, set đó Content-Security-Policy-Report-Only directive by thêm điều này as một header phản hồi cho trang web của bạn.» Báo cáo-Chỉ chế độ các báo cáo violations không có enforcing đó policy, so bạn có thể đo lường đó vấn đề trong production trước khi bạn turn on blocking. (Đó mechanism là đó modern report-to / Reporting-Endpoints header, hoặc đó older report-uri. Note này là một khác nhau, chung-purpose báo cáo-chỉ policy hơn upgrade-insecure-requests itself — putting đó cụ thể directive trong báo cáo-chỉ chế độ không hoạt động, as covered dưới.)

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

sử dụng all three: DevTools để verify được kết xuất trang, crawler để inventory fetched nguồn, CSP các báo cáo để catch thực-session dài tail đó chỉ hiển thị lên trong wild. Một crawl passing là evidence về nguồn, không bảo đảm đó mỗi consent state, quảng cáo-tech variant, personalization branch, hoặc worker là sạch.

Sửa tại nguồn

thực khắc phục bắt đầu trước khi bạn touch single reference: verify HTTPS tương đương thực ra tồn tại, presents hợp lệ certificate, và trả về nội dung bạn expect — không assume swapping scheme là safe chỉ vì domain resolves. sau khi đó confirmed, mỗi sub-tài nguyên reference nên resolve over HTTPS. Options dưới là trong rough order của preference, nhưng mỗi một vẫn phụ thuộc vào quyền sở hữu và context, không chỉ string bạn loại:

  • Absolute HTTPS URLs — thay đổi http://cdn.example.com/app.js để https://cdn.example.com/app.js. Rõ ràng và unambiguous; đó safest default khi bạn là không certain về đó serving context dưới.
  • Root-relative hoặc relative paths — cho các tài nguyên bạn own on đó giống nhau site, /assets/app.js inherits đó trang scheme tự động. Google HTTPS hướng dẫn: “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.” (bản dịch) «Hãy bảo đảm intrasite URLs và external URLs không phụ thuộc on một cụ thể giao thức. Dùng relative paths hoặc leave out đó giao thức as trong //example.com/something.js Treat này as conditional, không một universal khuyến nghị: điều này chỉ holds khi bạn đã confirmed bạn thực ra own đó tài nguyên (một relative path để một bên thứ ba asset không làm hợp lý), đó trang real base URL resolves đó way bạn expect (một <base> tag, một proxied path, hoặc an embedded/AMP context có thể thay đổi điều gì “relative” có nghĩa là), và đó không có gì downstream reconstructs đó URL trong một way đó reintroduces http:// — client-side code building một URL từ window.location hoặc một stored absolute giá trị, ví dụ.
  • Giao thức-relative URLs (//example.com/something.js) vẫn hoạt động, nhưng họ là không đó được ưu tiên universal cách sửa — gate them on đó giống nhau quyền sở hữu/base-URL kiểm tra trên, không chỉ habit. On an all-HTTPS web, an rõ ràng https:// là thường clearer và tránh surprises nếu đó file là bao giờ opened từ một non-HTTP context; reach cho giao thức-relative chỉ nơi bạn có một cụ thể reason không để hard-code đó scheme.

Tại quy mô bạn gần như không bao giờ hand-edit templates một by một — nhưng không chạy unguarded database string-replacement so với production either. http://yourdomainhttps://yourdomain looks như đơn giản tìm-và-replace, và cho đơn giản-text các trường nó thường là safe, nhưng CMS nội dung có thể là serialized hoặc structured (PHP serialized arrays, JSON blobs, block-editor dữ liệu) nơi naive substring đổi corrupts record thay vì sửa nó. sử dụng application-aware tooling đó understands serialization format, lại lên database đầu tiên, và dry-chạy replacement so Bạn có thể review affected các hàng trước khi committing. sau đó khắc phục handful của template/config files đó emit các URL; crawler và CSP các báo cáo mop lên stragglers.

upgrade-insecure-requests: safety net (và của nó limits)

Đó proactive backstop là một Nội dung-Security-Policy directive. web.dev: “The upgrade-insecure-requests CSP directive instructs the browser to upgrade insecure URLs before making network requests.” (bản dịch) «Đó upgrade-insecure-requests CSP directive instructs đó trình duyệt để upgrade insecure URLs trước đang làm network các yêu cầu.» Set đó header:

Content-Security-Policy: upgrade-insecure-requests

Theo MDN, điều này “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).” (bản dịch) «instructs người dùng agents để treat all of một site insecure URLs (những phân phối over HTTP) as though they đã được replaced với secure URLs (những phân phối over HTTPS).» Concretely, MDN says điều này upgrades: “requests to load resources (such as images, scripts, or fonts),” (bản dịch) «các yêu cầu để load các tài nguyên (such as images, scripts, hoặc fonts),» “navigation requests (such as link targets) which are same-origin with the document,” (bản dịch) «navigation các yêu cầu (such as link targets) mà là giống nhau-origin với đó document,» “navigation requests in nested browsing contexts, such as iframes,” (bản dịch) «navigation các yêu cầu trong nested browsing contexts, such as iframes,»“form submissions.” (bản dịch) «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

Hai operational details quan trọng beyond đó quote. đầu tiên, sub-tài nguyên upgrade không phải limited để giống nhau-origin các yêu cầu — nó navigation upgrade đó giống nhau-origin-chỉ theo quote trên; ordinary sub-tài nguyên các yêu cầu nhận rewritten trên origins cũng, so CDN-hosted script hoặc thứ ba-party font nhận upgraded, không chỉ giống nhau-trang web assets. thứ hai, rewrite happens trước khi trình duyệt mixed-nội dung và CSP kiểm tra evaluate yêu cầu, mà là Vì sao tài nguyên đó sẽ nếu không là blocked outright as mixed nội dung có thể load cleanly sau khi nó là upgraded — upgrade pre-empts block.

Three limits bạn phải không paper over:

  • Điều này không upgrade bên thứ ba top-cấp độ navigation. MDN: “However, top-level navigation requests whose target is a different origin will not be upgraded.” (bản dịch) «Tuy nhiên, top-cấp độ navigation các yêu cầu whose đích là một khác nhau origin sẽ không là upgraded.» Làm đó, điều này là explicitly không một replacement cho 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.” (bản dịch) «Đó upgrade-insecure-requests directive sẽ không bảo đảm đó người dùng visiting trang web của bạn qua links on bên thứ ba các trang sẽ là upgraded để HTTPS cho đó top-cấp độ navigation và thus không replace đó Strict-Transport-Security (HSTS) header.» (Hơn on đó split dưới.)
  • đây là một net, không một cách sửa, và điều này không fall lại. Nếu đó tài nguyên genuinely không khả dụng over HTTPS, đó upgraded yêu cầu chỉ fails outright — điều này làm không fall lại để đó original http:// version. Cleaning đó nguồn là vẫn đó job; đó directive covers điều gì bạn missed, không điều gì là genuinely hỏng.
  • Báo cáo-chỉ chế độ không perform đó upgrade — đây là một không-op. Putting upgrade-insecure-requests bên trong một Content-Security-Policy-Report-Only header là đã bỏ qua by đó trình duyệt: không có gì nhận rewritten, và không có gì nhận reported cho điều này either. Nếu bạn muốn visibility vào điều gì đó upgrade sẽ ảnh hưởng trước khi bạn enforce điều này, chạy một tách biệt, chung-purpose báo cáo-chỉ policy đó các báo cáo disallowed http:// destinations (đó giống nhau default-src https: báo cáo-chỉ approach dùng cho detection trên) — bạn không thể nhận đó visibility by đang làm upgrade-insecure-requests itself báo cáo-chỉ.

block-all-mixed-content — mostly lịch sử

có một companion directive, block-all-mixed-content, mà — theo MDN — “prevents loading any assets over HTTP when the page uses HTTPS,” (bản dịch) «ngăn loading bất kỳ assets over HTTP khi đó trang dùng HTTPS,» including “both blockable and upgradable mixed content,” (bản dịch) «cả hai blockable và upgradable mixed nội dung,» và áp dụng để iframes cũng. Trong thực tế đây là đã superseded. MDN marks điều này deprecated“obsolete in the specification,” (bản dịch) «obsolete trong đó đặc tả,» noting: “Content that isn’t blocked is now always upgraded to a secure connection, so this directive is not needed.” (bản dịch) «Nội dung đó không blocked là hiện tại luôn upgraded để một secure connection, so này directive không phải needed.» Reach cho upgrade-insecure-requests; treat block-all-mixed-content as legacy bạn có thể inherit, không điều gì đó để deploy new. Nếu bạn đã gửi upgrade-insecure-requests, block-all-mixed-content có không có gì left để làm cho upgraded các yêu cầu — đó upgrade rewrite happens đầu tiên, so by đó time một block-all kiểm tra sẽ chạy, đó yêu cầu có đã upgraded (hoặc có đã failed). đây là không chỉ legacy; đây là redundant wherever UIR là đã 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

Vì sao của bạn CMS giữ reintroducing nó

Mixed nội dung không phải một-time cleanup — nó recurs, vì several các hệ thống âm thầm re-inject http:// các URL sau khi bạn think bạn’re đã xong:

  • ** nội dung database.** Trong WordPress, Drupal, và phần lớn CMSes, editors paste images và embeds với absolute http:// các URL straight vào post các thân phản hồi. những điều đó trực tiếp trong database, không trong template, so code-cấp độ khắc phục không bao giờ touches them — hence DB tìm kiếm-và-replace.
  • Themes và plugin. theme hoặc plugin đó hard-codes http:// asset URL ( font, script, background image) reintroduces mixed nội dung on mỗi trang nó renders, và plugin cập nhật có thể bring nó lại sau khi bạn’ve cleaned nó.
  • Quảng cáo tech, phân tích, và thứ ba-party tags. Tag managers, quảng cáo networks, chat widgets, và phân tích snippets load của họ own sub-các tài nguyên — và nếu vendor tag vẫn calls http://, nó mixed nội dung Bạn có thể’t khắc phục trong của bạn own codebase. Đây là chính xác dài tail CSP reporting là cho; durable khắc phục là pressing vendor để phục vụ over HTTPS (hoặc dropping tag). nếu vendor có không hoạt động HTTPS điểm cuối, durable choices là giống nhau three: nhận them để khắc phục nó, replace dependency, hoặc drop nó — ở đó không phải fourth option đó giữ insecure version đang chạy safely.
  • Service workers và caches. service worker có thể bộ nhớ đệm phản hồi (hoặc yêu cầu itself) đó vẫn points tại http://, và nó’ll giữ serving đó stale reference on repeat visits ngay cả sau khi bạn khắc phục nguồn. Reproduce suspected khắc phục trong incognito/uncached session trước khi concluding nó đã không hoạt động, và làm sure deploy đó thay đổi tài nguyên các URL cũng bumps service worker/bộ nhớ đệm version so stale entries nhận evicted thay vì replayed.
  • Hard-coded http:// trong old nội dung và email/print templates đó nhận reused.

operational takeaway: bake detection vào recurring audit (crawler + CSP các báo cáo), không launch-day checklist bạn chạy sau khi.

Cách mixed nội dung interacts với HSTS

Mixed nội dung và HSTS solve liền kề nhưng khác các vấn đề, và conflating them là phổ biến mistake:

  • upgrade-insecure-requests các cách sửa sub-các tài nguyên của bạn own secure trang các yêu cầu — điều này upgrades đó images/scripts/iframes đó trang pulls trong.
  • HSTS (Strict-Transport-Security) forces đó top-cấp độ navigation để của bạn site onto HTTPS — ngay cả đó very đầu tiên yêu cầu, trước bất kỳ chuyển hướng fires — và defends so với SSL-stripping. Google frames HSTS as một way để “avoid the cost of the 301 redirect” (bản dịch) «tránh đó cost of đó 301 chuyển hướng» và để “defeat attacks like SSL Stripping.” (bản dịch) «defeat attacks như SSL Stripping.»

They không substitute cho mỗi 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.” (bản dịch) «sẽ không bảo đảm đó người dùng visiting trang web của bạn qua links on bên thứ ba các trang sẽ là upgraded để HTTPS cho đó top-cấp độ navigation và thus không replace đó Strict-Transport-Security (HSTS) header.» MỘT fully hardened setup dùng cả hai: upgrade-insecure-requests (hoặc sạch nguồn URLs) so đó secure trang có không insecure cargo, HSTS so không ai reaches đó site over HTTP ngay từ đầu. Và đó thông thường HSTS caution vẫn áp dụng — Google: “Don’t enable HSTS until you’re certain your site operation is robust enough to avoid ever deploying HTTPS with certificate validation errors,” (bản dịch) «Không bật HSTS cho đến khi bạn chắc chắn hoạt động của trang web đủ ổn định để không bao giờ triển khai HTTPS với certificate validation các lỗi,» và preloading là close để một một-way door.

Làm mixed nội dung hurt SEO trực tiếp?

Lead với trực tiếp effects, vì họ’re ones bạn thực ra control: mixed nội dung là đầu tiên security và functional vấn đề. Blocked active mixed nội dung breaks kết xuất và interactivity outright — bị thiếu stylesheet hoặc script là thực regression regardless của Điều gì công cụ tìm kiếm làm của nó. đó reason đủ để khắc phục nó trước khi bạn think về thứ hạng tại all.

Đó SEO consequences là real nhưng conditional, không trực tiếp hoặc guaranteed. Hiện tại chính thức Google hướng dẫn không establish sửa mixed nội dung as một trực tiếp xếp hạng boost — đó HTTPS tín hiệu xếp hạng itself là scheme-based (liệu đó URL bắt đầu với https://), không một sub-tài nguyên cleanliness kiểm tra, so một stray insecure image không by itself cost bạn “the HTTPS signal.” (bản dịch) «đó HTTPS tín hiệu.» Nhưng downstream effects có thể vẫn cho thấy lên depending on điều gì là thực ra hỏng: nếu Googlebot renders một trang whose CSS hoặc JS đã là blocked as mixed nội dung, điều này có thể chỉ mục một hỏng hoặc incomplete version; một downgraded security indicator có thể hurt người dùng trust, engagement, và conversions ngay cả với không xếp hạng thay đổi tại all; và Google chung preference cho HTTPS canonicals là itself conditional — không hợp lệ certificates, insecure dependencies, HTTPS-để-HTTP các chuyển hướng, hoặc conflicting các tín hiệu canonical elsewhere on đó trang có thể all thay đổi mà URL nhận chosen, independent of mixed nội dung cụ thể. Treat kết xuất, lập chỉ mục, canonicalization, và analytics effects as điều để verify on của bạn own các trang, không universal outcomes để promise — và cách sửa mixed nội dung cho đó security và functional reasons đầu tiên.

điều này sits bên trong rộng hơn HTTPS Đối với SEO topic, mà covers migration playbook, xếp hạng-tín hiệu weight, và HSTS trong đầy đủ; nếu bạn’re cũng gỡ lỗi certificate itself (chain các lỗi, expiry, DV/OV/EV), đó sibling deep dive.

Add an expert note

Pin an expert quote

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