[2026] Lỗi Mixed Content là gì? Nguyên nhân và cách khắc phục

Mixed content là một trong những vấn đề thường gặp khi vận hành website, đặc biệt khi chuyển sang giao thức HTTPS. Hiện tượng này xảy ra khi một trang web an toàn (HTTPS) tải các tài nguyên không an toàn (HTTP), gây ra lỗi hiển thị. Trong bài viết này, VinaHost sẽ giúp bạn hiểu rõ lỗi mixed content là gì, nguyên nhân phát sinh và hướng dẫn bạn cách khắc phục hiệu quả để website luôn an toàn và mượt mà.

Tóm tắt nhanh về Mixed Content
  • Bản chất và Nguyên nhân: Lỗi Mixed Content phát sinh khi một website đã cài đặt HTTPS nhưng vẫn tải một phần tài nguyên (hình ảnh, CSS, JS, iframe) qua giao thức HTTP không mã hóa, thường do link cố định cũ bị bỏ sót trong mã nguồn hoặc tài nguyên nhúng từ bên thứ ba.
  • Phân loại và Cơ chế xử lý: Lỗi được chia làm hai loại gồm thụ động (tài nguyên tĩnh như ảnh, video) và chủ động (tài nguyên tương tác như script, iframe). Các trình duyệt hiện đại ngày nay sẽ tự động tìm cách nâng cấp giao thức đối với tài nguyên thụ động hoặc chặn hoàn toàn nếu máy chủ đích không hỗ trợ HTTPS.
  • Hậu quả vận hành: Việc bỏ qua lỗi Mixed Content không chỉ phá vỡ tính bảo mật của SSL (dễ bị tấn công nghe lén, thay đổi nội dung), làm giảm thứ hạng SEO và trải nghiệm người dùng, mà còn vô hiệu hóa hoàn toàn các API Web nâng cao yêu cầu bối cảnh an toàn (như Service Workers, Geolocation, MediaDevices).
  • Quy trình xử lý chuẩn: Quản trị viên cần phát hiện lỗi thông qua DevTools của trình duyệt hoặc các công cụ quét tự động, sau đó khắc phục bằng cách cấu hình chỉ thị CSP upgrade-insecure-requests, thay đổi hàng loạt URL trong database (bằng SQL hoặc plugin), xử lý các tệp tin tĩnh bị lưu đệm (cache), hoặc cấu hình lại proxy nhận diện giao thức của máy chủ.

1. Lỗi Mixed Content là gì?

Lỗi Mixed Content (nội dung hỗn hợp) là tình trạng xảy ra khi một trang web đã được thiết lập chứng chỉ bảo mật và chạy trên giao thức HTTPS, nhưng trong mã nguồn của trang đó vẫn còn chứa các yêu cầu tải tài nguyên (hình ảnh, video, mã script, file CSS) thông qua giao thức HTTP không mã hóa. Sự bất đồng bộ này tạo ra một lỗ hổng bảo mật trực tiếp, khiến các trình duyệt web phát hiện và đưa ra cảnh báo website “Không an toàn” (Not secure) tới người dùng.

mixed content
Lỗi Mixed Content

Sau khi đã cài đặt tiêu chuẩn bảo mật SSL/TLS, toàn bộ thông tin truyền tải trên trang đáng lẽ phải được bảo vệ chặt chẽ. Tuy nhiên, khi trang chứa Mixed Content, người dùng có cảm giác đang duyệt trên kết nối an toàn nhờ HTTPS, nhưng thực tế một số tài nguyên không được mã hóa, tạo cơ hội để dữ liệu bị theo dõi hoặc đánh cắp trong quá trình truyền tải.

Hầu hết các trình duyệt phổ biến như Chrome, Firefox, Edge hay Internet Explorer đều cảnh báo khi phát hiện Mixed Content. Thông thường, bạn sẽ thấy biểu tượng ổ khóa bị gạch chéo hoặc thông báo “Not secure”, giúp người dùng nhận biết rằng trang chưa hoàn toàn an toàn.

mixed content
Mixed Content trên các trình duyệt Google Chrome, Mozilla Firefox, Microsoft Edge và Internet Explorer

⚠️ Lưu ý: Nhiều người cho rằng chỉ các website thương mại điện tử hoặc website có tính năng đăng nhập/thanh toán mới cần HTTPS. Tuy nhiên, nếu website tin tức hoặc blog của bạn bị Mixed Content, kẻ tấn công mạng có thể thực hiện kỹ thuật tiêm quảng cáo độc hại, chuyển hướng người đọc sang trang web lừa đảo hoặc chèn các đoạn mã theo dõi hành vi của người dùng mà bạn không hề hay biết.

2. Tại sao website lại xuất hiện lỗi Mixed Content?

Website xuất hiện lỗi Mixed Content chủ yếu do sự thiếu đồng bộ trong việc cấu hình và quản lý liên kết tài nguyên sau khi chuyển đổi từ giao thức HTTP sang HTTPS. Khi hệ thống máy chủ đã áp dụng giao thức mã hóa mới, nhưng mã nguồn website hoặc các dịch vụ tích hợp từ bên thứ ba vẫn sử dụng các đường dẫn tuyệt đối (hardcoded) bắt đầu bằng tiền tố http://, trình duyệt sẽ ngay lập tức ghi nhận lỗi Mixed Content khi tải trang.
Dưới đây là các nguyên nhân cụ thể dẫn đến tình trạng này:

  • Sử dụng link cố định HTTP trong mã nguồn: Nhiều website vẫn sử dụng các đường dẫn tĩnh đến hình ảnh, script, CSS hoặc iframe bằng http:// thay vì HTTPS. Khi trang được truy cập qua HTTPS, các đường dẫn này tạo ra mixed content.
  • Chèn tài nguyên từ bên thứ ba không hỗ trợ HTTPS: Một số plugin, thư viện hoặc dịch vụ bên ngoài có thể chỉ cung cấp nội dung qua HTTP. Khi bạn nhúng chúng vào trang HTTPS, trình duyệt sẽ phát hiện mixed content. Để hạn chế điều này, việc lựa chọn một nhà cung cấp SSL uy tín giúp bạn được hỗ trợ kỹ thuật tốt hơn khi xử lý các dịch vụ tích hợp.
  • Chuyển đổi website từ HTTP sang HTTPS nhưng bỏ sót tài nguyên: Trong quá trình nâng cấp website sang HTTPS, nếu không kiểm tra và cập nhật tất cả các liên kết nội bộ, vẫn sẽ tồn tại các tài nguyên được gọi qua HTTP.
  • Nội dung nhúng từ iframe hoặc video bên ngoài: Khi nhúng iframe, video hoặc quảng cáo từ nguồn HTTP, trang HTTPS sẽ bị coi là mixed content. Lỗi này cũng dễ xảy ra khi nhúng link tài nguyên tĩnh từ subdomain chưa đăng ký Wildcard SSL.

3. Phân loại lỗi Mixed Content

Để có phương án xử lý phù hợp và đánh giá đúng mức độ rủi ro đối với website, việc phân loại lỗi Mixed Content là vô cùng cần thiết. Trình duyệt web sẽ dựa trên tính chất hoạt động của từng loại tài nguyên đối với cấu trúc trang để đưa ra các phương thức xử lý và cảnh báo khác nhau. Dưới đây là các nhóm nội dung hỗn hợp phổ biến cùng cơ chế phản ứng tự động từ các trình duyệt hiện nay.

3.1. Nội dung hỗn hợp thụ động (Passive Mixed Content)

Đây là loại nội dung chỉ hiển thị thông tin, không thay đổi hoặc can thiệp vào hành vi của trang web. Ví dụ: hình ảnh, video, âm thanh được tải qua giao thức HTTP.

  • Tác động: Trên các trình duyệt hiện đại, khi phát hiện nội dung thụ động sử dụng HTTP, trình duyệt sẽ tự động thử nâng cấp yêu cầu lên HTTPS. Nếu máy chủ chứa tài nguyên không hỗ trợ HTTPS, trình duyệt sẽ chặn hoàn toàn tài nguyên đó (gây lỗi ảnh vỡ, video không chạy), thay vì tiếp tục tải qua HTTP và hiển thị cảnh báo ‘Không an toàn’ như trước đây.
  • Mức độ nguy hiểm: Thấp hơn so với nội dung chủ động, nhưng vẫn ảnh hưởng tới uy tín của website và trải nghiệm người dùng.

3.2. Nội dung hỗn hợp chủ động (Active Mixed Content)

Đây là loại nội dung có khả năng thay đổi hoặc tác động trực tiếp đến chức năng của trang, chẳng hạn như script, iframe, plugin hoặc file JavaScript được tải qua HTTP.

  • Tác động: Trình duyệt sẽ chặn các tài nguyên này để bảo vệ người dùng, dẫn đến việc một số tính năng của trang web không hoạt động. Hơn nữa, loại này rất nguy hiểm vì kẻ tấn công có thể chèn mã độc vào script không mã hóa để đánh cắp dữ liệu hoặc kiểm soát trang web.
  • Mức độ nguy hiểm: Cao, gây rủi ro bảo mật trực tiếp, ảnh hưởng chức năng trang và làm mất niềm tin của người dùng.

Để hiểu rõ mức độ ảnh hưởng và cách xử lý từng loại mixed content. Bảng dưới đây giúp bạn nhìn thấy sự khác nhau một cách rõ ràng và trực quan hơn:

Tiêu chí kỹ thuậtPassive Mixed ContentActive Mixed Content
Loại tài nguyênTài nguyên tĩnh phục vụ hiển thị: hình ảnh, video, âm thanhTài nguyên có thể thay đổi DOM, cấu trúc trang: JavaScript, iframe, CSS, Web Fonts, AJAX, plugin.
Khả năng can thiệp vào trangKhông thể thay đổi cấu trúc trang, không thao tác DOM.Có thể chỉnh sửa DOM, thêm code, thay đổi chức năng trang.
Rủi ro bị tấn côngThấp, chủ yếu là nguy cơ bị thay đổi nội dung hiển thị nếu bị MITM.Rất cao, có thể bị tiêm mã độc, chạy script không an toàn, đánh cắp session, cookie hoặc dữ liệu.
Cách trình duyệt xử lýThường cho phép tải nhưng gắn cảnh báo “Not secure”.Thường bị chặn hoàn toàn vì ảnh hưởng trực tiếp đến bảo mật.
Tầm ảnh hưởngẢnh hưởng đến giao diện (nội dung không hiển thị, lệch bố cục).Ảnh hưởng đến logic hoạt động, quy trình xử lý, tính năng quan trọng của website.
Khả năng bị khai thác thông qua MITMThay đổi hình ảnh hoặc font hiển thị; mức độ giới hạn.Có thể chạy mã tùy ý, chiếm quyền điều khiển hành vi trang, đánh cắp thông tin.
Mức độ gây hạiThấp đến trung bình.Cao, có thể dẫn tới tấn công nghiêm trọng (XSS, redirect độc hại, đánh cắp dữ liệu).
Lý do trình duyệt cảnh báoVì nội dung hiển thị không được mã hóa nên có thể bị nghe lén.Vì có thể bị lợi dụng để tấn công trực tiếp người dùng.

Có thể thấy rằng mixed content chủ động nguy hiểm hơn nhiều so với mixed content bị động, vì nó tác động trực tiếp đến hoạt động và bảo mật của website. Do đó, việc phân biệt hai loại này giúp bạn dễ dàng ưu tiên xử lý và giữ website luôn an toàn.

3.3. Cơ chế Autoupgrade (Tự động nâng cấp) của trình duyệt hiện đại

Hầu hết các tài liệu hướng dẫn cũ đều cho rằng trình duyệt sẽ luôn tải tài nguyên thụ động (như hình ảnh) và chỉ hiển thị cảnh báo “Not Secure”. Tuy nhiên, cơ chế bảo mật của các trình duyệt hiện đại (như Google Chrome, Safari, Firefox) đã thay đổi căn bản thông qua tính năng Autoupgrade (Tự động nâng cấp giao thức).

[Trình duyệt phát hiện liên kết HTTP]
│
├──► [Thử tải bằng HTTPS] ──► Thành công ──► Hiển thị bình thường (Không lỗi)
│
└──► [Không hỗ trợ HTTPS] ──► Thất bại ──► Chặn hoàn toàn (Bể giao diện/Mất ảnh)

Cách thức hoạt động: Khi trình duyệt phát hiện một tài nguyên thụ động (hình ảnh, âm thanh, video) có link http:// trên trang HTTPS, nó sẽ không tải ngay qua HTTP. Thay vào đó, trình duyệt sẽ tự động “nâng cấp” yêu cầu đó sang https:// một cách âm thầm để thử tải.

Hệ quả thực tế đối với quản trị viên:

  • Nếu máy chủ lưu trữ tài nguyên đó có hỗ trợ HTTPS: Tài nguyên sẽ hiển thị bình thường và trang web không bị cảnh báo Mixed Content.
  • Nếu máy chủ lưu trữ tài nguyên đó không hỗ trợ HTTPS: Trình duyệt sẽ chặn hoàn toàn (block) tài nguyên đó. Lúc này, người dùng sẽ thấy hình ảnh bị lỗi hiển thị (ảnh vỡ) hoặc video không chạy được, dù trên thanh địa chỉ có thể vẫn hiển thị biểu tượng ổ khóa an toàn.

Điều này khiến việc phát hiện lỗi Mixed Content bằng mắt thường trở nên khó khăn hơn, vì lỗi hiển thị xuất hiện nhưng cảnh báo bảo mật đôi khi bị ẩn đi.

4. Tác hại của việc bỏ qua Mixed Content

Bỏ qua lỗi Mixed Content là một sai lầm nghiêm trọng gây ảnh hưởng toàn diện đến khả năng hoạt động ổn định và uy tín của website. Dù đôi khi trình duyệt chỉ hiển thị cảnh báo nhẹ, những tác động tiêu cực mà nó để lại sẽ trực tiếp làm suy giảm hiệu suất vận hành hệ thống từ góc độ bảo mật dữ liệu, tối ưu hóa công cụ tìm kiếm, cho đến trải nghiệm mua sắm và chuyển đổi của người dùng thực tế.

mixed content
Những hậu quả quan trọng nếu bạn không xử lý lỗi Mixed Content

4.1. Rủi ro bảo mật

Mixed Content phá vỡ hoàn toàn lợi ích của HTTPS, khiến website có thể bị khai thác dù bạn đã cài SSL. Các rủi ro chính gồm:

  • Tài nguyên HTTP bị can thiệp dễ dàng: kẻ tấn công có thể chỉnh sửa, thay thế hoặc chèn mã độc vào các file tải qua HTTP.
  • Tấn công MITM (Man-in-the-Middle): dữ liệu trao đổi giữa người dùng và server có thể bị đọc lén hoặc chỉnh sửa mà không hề hay biết.
  • Chiếm quyền điều khiển trang: nếu file JS không an toàn bị thay đổi, hacker có thể phá giao diện, đánh cắp cookie hoặc thực thi mã tùy ý.
  • Trang HTTPS bị đánh đồng là “Không an toàn”: trình duyệt sẽ chặn tài nguyên nguy hiểm, thậm chí khóa một số chức năng để bảo vệ người dùng.
mixed content
Chỉ cần một file không được mã hóa cũng đủ biến một trang HTTPS thành mục tiêu tấn công

4.2. Ảnh hưởng đến SEO

Google xem HTTPS là tiêu chí xếp hạng, nên Mixed Content ảnh hưởng nghiêm trọng đến SEO:

  • Website bị cảnh báo “Not secure” làm giảm CTR, giảm tín hiệu người dùng.
  • Googlebot có thể không lập chỉ mục đúng nếu các file CSS/JS bị trình duyệt chặn tải.
  • Điểm Core Web Vitals giảm do lỗi tài nguyên bị block hoặc tải chậm.
  • Giảm uy tín website trong mắt thuật toán vì không đảm bảo tiêu chuẩn HTTPS 100%.
mixed content
Bạn có thể tối ưu SEO rất tốt, nhưng Mixed Content vẫn khiến toàn bộ nỗ lực bị kéo xuống

⚠️ Lưu ý: Khi các tệp tin giao diện quan trọng như CSS hoặc JavaScript bị trình duyệt chặn tải do Mixed Content, Googlebot sẽ thu thập dữ liệu website của bạn dưới dạng một trang bị lỗi giao diện (bị vỡ khung, mất định dạng di động). Điều này khiến điểm trải nghiệm trang và Core Web Vitals bị đánh giá thấp, gián tiếp làm sụt giảm thứ hạng từ khóa trên Google.

4.3. Trải nghiệm người dùng (UX)

Mixed Content tác động trực tiếp đến cảm nhận của người dùng:

  • Cảnh báo “Không an toàn” ngay trên thanh địa chỉ khiến người dùng lo ngại, đặc biệt khi điền form hoặc thanh toán.
  • Một số phần giao diện không hiển thị như hình ảnh, CSS hoặc font bị chặn tải.
  • Các tính năng quan trọng không hoạt động nếu script bị trình duyệt block.
  • Tỷ lệ thoát tăng mạnh khi người dùng cảm thấy website thiếu đáng tin cậy.
mixed content
Mixed Content tác động trực tiếp đến cảm nhận của người dùng

4.4. Ảnh hưởng đến tỷ lệ chuyển đổi

Nếu bạn làm website bán hàng, landing page hoặc thu lead, Mixed Content có thể gây thiệt hại trực tiếp:

  • Khách hàng không dám thanh toán vì thấy cảnh báo bảo mật. Đối với các trang thương mại điện tử, việc sử dụng chứng chỉ SSL thương mại điện tử là cực kỳ cần thiết để tạo sự tin tưởng tuyệt đối cho người dùng.
  • Form gửi thông tin, nút đặt hàng có thể không hoạt động nếu script bị chặn.
  • Mất niềm tin thương hiệu, người dùng sẽ không quay lại nếu trang trông “nguy hiểm” hoặc thiếu chuyên nghiệp.
  • Tỷ lệ chuyển đổi (conversion rate) giảm đáng kể, dẫn đến mất doanh thu dù lưu lượng truy cập không đổi.

4.5. Vô hiệu hóa các API Web hiện đại

Một tác hại nghiêm trọng nhưng ít khi được nhắc đến là việc Mixed Content sẽ phá vỡ trạng thái Secure Context (Bối cảnh an toàn) của trang web. Theo tiêu chuẩn của W3C, trình duyệt chỉ cho phép kích hoạt các API nâng cao khi toàn bộ trang web và các tài nguyên đi kèm được truyền tải an toàn 100%.

Khi trang web xuất hiện lỗi Mixed Content (đặc biệt là Active Mixed Content), các tính năng sau sẽ bị trình duyệt khóa hoàn toàn để bảo vệ thiết bị của người dùng:

  • Service Workers: Đây là cốt lõi của công nghệ PWA (Progressive Web App). Nếu Service Worker bị tắt, website của bạn sẽ mất khả năng hoạt động ngoại tuyến, không thể lưu bộ nhớ đệm nâng cao và không thể gửi thông báo đẩy.
  • Geolocation API: Các tính năng yêu cầu định vị GPS của người dùng (như tìm cửa hàng gần nhất trên bản đồ tích hợp của trang thương mại điện tử) sẽ không hoạt động.
  • MediaDevices API: Trình duyệt sẽ từ chối cấp quyền truy cập vào Camera hoặc Microphone của thiết bị. Điều này ảnh hưởng trực tiếp đến các tính năng như chat video, quét mã QR trực tuyến hoặc xác thực danh tính (eKYC).

5. Các phương pháp hiệu quả để phát hiện Mixed Content trên website

Để khắc phục triệt để lỗi Mixed Content, việc đầu tiên là bạn cần tìm ra chính xác nguồn gốc và danh sách các liên kết không an toàn đang tồn tại trên trang. Tùy thuộc vào quy mô trang web và mức độ am hiểu kỹ thuật, bạn có thể áp dụng các giải pháp kiểm tra thủ công thông qua tính năng tích hợp sẵn của trình duyệt, sử dụng các phần mềm quét tự động chuyên dụng, hoặc phân tích trực tiếp mã nguồn của hệ thống.

5.1. Cách 1: Sử dụng công cụ cho lập trình viên của trình duyệt

Đây là cách nhanh nhất và trực tiếp nhất để phát hiện tài nguyên nào trên trang vẫn đang tải qua HTTP. Bạn có thể thực hiện ngay trên trình duyệt mà không cần cài thêm bất kỳ công cụ nào.

Bước 1: Mở DevTools (Công cụ dành cho lập trình viên)

Truy cập trang web đang xuất hiện cảnh báo “Not secure”, sau đó mở DevTools bằng tổ hợp phím:

  • Windows: F12 hoặc Ctrl + Shift + I
  • macOS: Cmd + Option + I

Hoặc mở qua menu trình duyệt: Menu => More Tools => Developer Tools

mixed content
Truy cập trang web đang cảnh báo Not secure, sau đó mở DevTools

Bước 2: Kiểm tra cảnh báo trong tab Console

Sau khi DevTools mở lên, chuyển sang tab Console và tải lại trang (F5). Tại đây, trình duyệt sẽ liệt kê chi tiết các cảnh báo Mixed Content:

  • Dòng cảnh báo thường hiển thị màu vàng hoặc đỏ
  • Các thông báo dạng: “Mixed Content: The request was blocked because it was not loaded over HTTPS.”
  • Một số tài nguyên được Chrome tự động nâng cấp lên HTTPS, cũng sẽ hiện thông báo để bạn biết.
mixed content
Chuyển sang tab Console và tải lại trang (F5)

Tab Console giúp bạn biết chính xác file nào gây lỗi (hình ảnh, CSS, JS, video,…)

Bước 3: Kiểm tra nguồn tài nguyên trong tab Network

Chuyển sang tab Network, sau đó reload lại trang. Tại đây, bạn có thể:

  • Lọc các request HTTP không an toàn
  • Xem các yêu cầu bị block
  • Xem tài nguyên đã được auto-upgrade sang HTTPS
  • Nhấp vào từng request để xem:
    • URL gốc
    • Trạng thái (status)
    • File được load từ đâu
    • Trang nào đang gọi tài nguyên lỗi
mixed content
Tab Network

Tab Network đặc biệt hữu ích khi trang có nhiều file và bạn muốn kiểm tra toàn bộ luồng tải một cách chính xác.

Bước 4: Kiểm tra tổng quan trong tab Security

Tab Security giúp bạn đánh giá độ an toàn của toàn trang:

  • Trình duyệt sẽ thông báo tài nguyên nào “not secure
  • Báo hiệu có xuất hiện mixed content hay không
  • Xác định nguồn gốc tài nguyên HTTP
mixed content
Tab Security giúp bạn đánh giá độ an toàn của toàn trang

Đây là tab rất hữu ích để kiểm tra tổng quan sau khi bạn đã xử lý lỗi hoặc đang kiểm tra mức độ an toàn của trang.

5.2. Cách 2: Quét toàn bộ website bằng Screaming Frog SEO Spider

Nếu website có nhiều trang, việc kiểm tra thủ công bằng DevTools sẽ rất tốn thời gian. Khi đó, Screaming Frog SEO Spider là công cụ cực kỳ hiệu quả để phát hiện nhanh các tài nguyên đang tải qua HTTP.

mixed content
Screaming Frog SEO Spider là công cụ giúp quét toàn bộ website và nhanh chóng liệt kê các tài nguyên vẫn tải qua HTTP, từ đó phát hiện chính xác các trang bị lỗi Mixed Content

Đây là một phần mềm SEO chuyên dụng giúp thu thập dữ liệu toàn bộ website. Nó có khả năng:

  • Quét tất cả URL trên trang
  • Phân tích toàn bộ tài nguyên như hình ảnh, script, CSS
  • Xác định các request vẫn đang dùng HTTP
  • Tìm ra các trang chứa Mixed Content chỉ với vài cú nhấp chuột
  • Bản miễn phí cho phép crawl 500 URL – đủ dùng cho nhiều website nhỏ và trung bình.

Thực hiện các bước sau để kiểm tra Mixed Content bằng Screaming Frog

Bước 1: Tải và mở Screaming Frog => nhập URL website => nhấn Start để crawl.

mixed content
Nhập URL website và nhấn Start

Bước 2: Sau khi quét xong, vào tab Protocol và lọc HTTP để xem các tài nguyên không an toàn.

Bước 3: Vào Reports => Insecure Content / Non-secure Content để xuất danh sách đầy đủ các trang và file gây lỗi Mixed Content.

Công cụ sẽ cho bạn biết rõ:

  • Trang nào gặp lỗi
  • Tài nguyên HTTP nào đang được gọi
  • Đường dẫn cụ thể của từng file

⚠️ Lưu ý: Phiên bản miễn phí của Screaming Frog chỉ hỗ trợ quét tối đa 500 URL. Nếu website của bạn là trang tin tức hoặc trang bán hàng có số lượng sản phẩm lớn hơn 500 trang, công cụ sẽ không thể quét hết. Bạn nên cân nhắc nâng cấp bản quyền hoặc chia nhỏ việc quét theo từng danh mục để tránh bỏ sót lỗi Mixed Content ở các trang sâu.

5.3. Cách 3: Sử dụng các công cụ Online

Nếu bạn không muốn kiểm tra từng trang thủ công, các công cụ trực tuyến sẽ giúp phát hiện Mixed Content nhanh chóng mà không cần cài phần mềm. Đây là lựa chọn lý tưởng để kiểm tra các trang đơn lẻ hoặc đánh giá nhanh một website.

Các công cụ phổ biến

  • Why No Padlock: Miễn phí, quét một URL và liệt kê tất cả tài nguyên không an toàn, bao gồm hình ảnh, script, CSS. Chỉ cần nhập URL => nhấn “Check Page” => xem chi tiết các lỗi.
  • SSL Checker: Kiểm tra chứng chỉ SSL và các vấn đề liên quan đến HTTPS, bao gồm tài nguyên Mixed Content.
  • Ngoài ra còn có các công cụ khác như Jitbit SSL Check, SSL Labs Test, phù hợp khi muốn kiểm tra toàn bộ HTTPS trên site.
mixed content
Các công cụ Online giúp phát hiện lỗi Mixed Content nhanh chóng mà không cần cài phần mềm

Ưu điểm khi dùng công cụ online

  • Dễ sử dụng, không cần cài đặt.
  • Phát hiện nhanh các tài nguyên HTTP trên trang HTTPS.
  • Thích hợp cho người quản trị web hoặc SEO muốn tổng hợp lỗi trước khi gửi cho dev xử lý.
  • Một số công cụ còn hỗ trợ xuất báo cáo PDF/CSV để lưu trữ hoặc chia sẻ.

5.4. Kiểm tra trực tiếp trong mã nguồn

Một cách đơn giản nhưng hiệu quả để phát hiện Mixed Content là tìm kiếm trực tiếp các liên kết HTTP trong mã nguồn của website. Phương pháp này giúp bạn nhanh chóng xác định các file HTML, CSS, JS hoặc hình ảnh chưa chuyển sang HTTPS.

Cách thực hiện:

Bước 1: Mở mã nguồn trang web đang cảnh báo “Không an toàn”

  • Trên trình duyệt: nhấn Ctrl + U (Windows) hoặc Cmd + Option + U (Mac).
  • Hoặc mở trực tiếp file HTML, CSS, JS trên máy tính bằng trình soạn thảo code.
mixed content
Mở mã nguồn trang web đang cảnh báo “Không an toàn”

Bước 2: Tìm kiếm các đường dẫn HTTP

  • Sử dụng chức năng tìm kiếm (Ctrl + F hoặc Cmd + F) và gõ http://.
mixed content
Sử dụng chức năng tìm kiếm và gõ http://

Bước 3: Kiểm tra các file CSS và JS

  • Một số file CSS hoặc JS có thể chứa URL nhúng tài nguyên bên ngoài như font, hình ảnh hoặc script vẫn dùng HTTP. 
  • Mở từng file CSS/JS và lặp lại tìm kiếm http:// để xác định chính xác các liên kết chưa an toàn.

Bước 4: Ghi chú và chỉnh sửa

  • Lưu lại danh sách các URL HTTP.
  • Cập nhật chúng sang HTTPS hoặc dùng đường dẫn tương đối nếu là tài nguyên nội bộ, ví dụ:
<script src="/js/script.js"></script>
<img src="/images/photo.jpg">

Bên cạnh việc tối ưu hóa mã nguồn, việc sở hữu một chứng chỉ bảo mật chất lượng, được cấp phép bởi các tổ chức uy tín toàn cầu là nền tảng cốt lõi giúp website vận hành an toàn, tránh các lỗi cảnh báo giao thức không đáng có.

Tại VinaHost, chúng tôi cung cấp các gói SSL giá rẻ phù hợp với mọi nhu cầu của cá nhân và doanh nghiệp. Tùy thuộc vào quy mô và tính chất hoạt động của website, bạn có thể dễ dàng lựa chọn các dòng chứng chỉ bảo mật từ các thương hiệu hàng đầu thế giới như Sectigo SSL hoặc GeoTrust SSL để tối ưu hóa khả năng bảo vệ dữ liệu khách hàng và nâng cao uy tín thương hiệu trên môi trường số.

6. Cách sửa lỗi Mixed Content nhanh chóng, hiệu quả

Để khắc phục hoàn toàn lỗi Mixed Content và đưa website về trạng thái hoạt động an toàn dưới giao thức HTTPS, bạn cần áp dụng các kỹ thuật đồng bộ hóa liên kết. Tùy thuộc vào cấu trúc kỹ thuật của hệ thống, chúng ta có thể lựa chọn các giải pháp tự động ở tầng ứng dụng, xử lý trực tiếp trong cơ sở dữ liệu mã nguồn, tối ưu hóa cấu trúc đường dẫn tương đối hoặc tận dụng sức mạnh xử lý của hệ thống CDN trung gian.

6.1. Sửa lỗi tự động bằng “Upgrade-Insecure-Requests”

Một trong những cách đơn giản nhất để hạn chế tình trạng tài nguyên tải qua HTTP là sử dụng chỉ thị Content Security Policy (CSP) ‘upgrade-insecure-requests’, cho phép trình duyệt tự động nâng cấp các URL chưa an toàn lên HTTPS

Cách hoạt động của “upgrade-insecure-requests”

    • Khi trình duyệt phát hiện một URL HTTP trên trang HTTPS, nó sẽ thử tải tài nguyên đó bằng HTTPS.
    • Nếu URL đó tồn tại trên HTTPS, tài nguyên sẽ được tải bình thường.
    • Nếu URL đó không tồn tại trên HTTPS, trình duyệt sẽ bỏ qua để đảm bảo trang vẫn an toàn.

Nói cách khác, chỉ thị này giúp ngăn trang bị đánh dấu là không an toàn mà không cần phải chỉnh sửa từng file. Bạn có thể dùng “upgrade-insecure-requests” theo hai cách: Thêm thẻ <meta> vào trang HTML (áp dụng cho từng trang):

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

Thêm header CSP trên server (áp dụng toàn website):

  • Apache (.htaccess):
Header set Content-Security-Policy "upgrade-insecure-requests"
  • Nginx:
add_header Content-Security-Policy "upgrade-insecure-requests";

Với cách này, mọi URL HTTP trên website sẽ được trình duyệt tự động nâng cấp lên HTTPS nếu có sẵn. Đây là cách nhanh chóng và hiệu quả để giảm lỗi Mixed Content, đặc biệt hữu ích với những website còn nhiều URL cũ.

⚠️ Lưu ý:

  • Chỉ những tài nguyên có sẵn HTTPS mới được tải.
  • Nếu tài nguyên không hỗ trợ HTTPS, trình duyệt sẽ bỏ qua, chứ không tải qua HTTP.
  • Đây là giải pháp tạm thời; tốt nhất vẫn nên cập nhật trực tiếp URL trong HTML, CSS, JS để đảm bảo toàn bộ website an toàn.

6.2. Tìm và thay thế (Search & Replace) trong Database

Một cách hiệu quả để xử lý lỗi Mixed Content là cập nhật toàn bộ URL HTTP cũ thành HTTPS trong database. Phương pháp này đặc biệt hữu ích với các website lớn, nơi nhiều bài viết, trang hoặc media vẫn sử dụng đường dẫn HTTP.

Có hai cách phổ biến:

1. Sử dụng câu lệnh SQL trực tiếp

Nếu bạn quen thao tác với cơ sở dữ liệu, bạn có thể chạy lệnh SQL như sau:

UPDATE wp_posts
SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com');

Lệnh này sẽ thay tất cả URL HTTP trong nội dung bài viết (post_content) thành HTTPS

2. Sử dụng công cụ hỗ trợ tìm và thay thế

Nếu không quen thao tác SQL, bạn có thể dùng plugin Search & Replace để cập nhật toàn bộ URL từ HTTP sang HTTPS một cách nhanh chóng và an toàn. Các bước thực hiện:

  • Cài đặt và kích hoạt plugin Search & Replace trong WordPress.
mixed content
Cài đặt plugin Search & Replace
  • Vào Tools => Search & Replace.
  • Chọn tất cả các bảng trong database bằng cách nhấn Select All Tables.
    • Trong ô tìm kiếm (Search), nhập URL HTTP cũ (ví dụ: http://yourdomain.com).
    • Trong ô thay thế (Replace), nhập URL HTTPS mới (ví dụ: https://yourdomain.com).
  • Nhấn Do Search & Replace để plugin tiến hành thay đổi tất cả các URL được tìm thấy trong database.
    mixed content
    Sử dụng công cụ hỗ trợ tìm và thay thế

⚠️ Lưu ý: Luôn sao lưu database trước khi chạy plugin để tránh rủi ro. Sau khi hoàn tất, bạn có thể xóa plugin nếu muốn dọn dẹp hệ thống.

6.3. Sử dụng URL tương đối (Relative URLs)

Một cách khác để tránh lỗi Mixed Content là chuyển các URL tuyệt đối sang URL tương đối.

  • URL tuyệt đối: http://yourdomain.com/img/logo.png
  • URL tương đối theo giao thức: //yourdomain.com/img/logo.png
mixed content
Sử dụng URL tương đối để tránh phát sinh Mixed Content

Khi dùng URL tương đối theo giao thức, trình duyệt sẽ tự động tải tài nguyên theo giao thức của trang hiện tại (HTTP hoặc HTTPS). Điều này giúp:

  • Giảm khả năng gặp lỗi Mixed Content.
  • Không phải sửa URL khi di chuyển toàn bộ website sang HTTPS.
  • Giữ mọi tài nguyên trên trang đồng bộ với giao thức an toàn.

Cách thực hiện:

  • Kiểm tra mã nguồn HTML, CSS và JS của website.
  • Tìm các URL tuyệt đối đang dùng HTTP.
  • Chuyển chúng sang dạng //domain.com/… hoặc dùng URL tương đối hoàn toàn với đường dẫn nội bộ (/images/logo.png).

⚠️ Lưu ý: Phương pháp này chỉ hoạt động hiệu quả nếu máy chủ đích (máy chủ chứa file ảnh, script bạn đang gọi) có hỗ trợ chứng chỉ SSL. Nếu bạn gọi một tài nguyên từ website bên ngoài bằng đường dẫn <code>//external-site.com/image.jpg</code> nhưng trang web đó không có HTTPS, trình duyệt vẫn sẽ chặn tải và báo lỗi.

6.4. Khắc phục lỗi Mixed Content nhanh chóng bằng Cloudflare

Nếu website của bạn đang sử dụng Cloudflare làm CDN hoặc lớp bảo mật trung gian, bạn có thể tận dụng một tính năng tự động cực kỳ mạnh mẽ để sửa lỗi Mixed Content mà không cần can thiệp vào mã nguồn của máy chủ.

  • Bước 1: Đăng nhập vào tài khoản Cloudflare và chọn tên miền cần xử lý.
  • Bước 2: Di chuyển đến menu SSL/TLS ở thanh điều hướng bên trái, sau đó chọn mục Edge Certificates.
  • Bước 3: Cuộn xuống tìm tính năng Automatic HTTPS Rewrites và chuyển trạng thái sang On.

Khi tính năng này được kích hoạt, Cloudflare sẽ quét mã HTML của trang web trước khi gửi nó đến trình duyệt của người dùng. Nếu phát hiện các tài nguyên nội bộ hoặc từ bên thứ ba có tiền tố http:// nhưng máy chủ đó có hỗ trợ HTTPS, Cloudflare sẽ tự động viết lại các liên kết này thành https:// trên môi trường truyền dẫn.

Đây là một cách sửa lỗi Mixed Content cực kỳ nhanh và không tiêu tốn tài nguyên của máy chủ gốc (Origin Server). Hơn thế nữa, phương pháp này còn giải quyết được cả các liên kết HTTP từ các plugin bên thứ ba mà bạn không thể sửa code thủ công.

⚠️ Lưu ý: Tính năng Automatic HTTPS Rewrites của Cloudflare chỉ là giải pháp xử lý ở phần ngọn trước khi dữ liệu đến tay người dùng. Nó không thay đổi mã nguồn gốc trên máy chủ của bạn. Nếu sau này bạn tắt Cloudflare hoặc chuyển website sang nhà cung cấp DNS khác, lỗi Mixed Content sẽ lập tức xuất hiện trở lại. Hãy coi đây là giải pháp ứng cứu tạm thời trước khi bạn có thời gian dọn dẹp triệt để mã nguồn.

7. Hướng dẫn sửa lỗi Mixed Content trên WordPress

Đối với mã nguồn mở WordPress, lỗi Mixed Content rất dễ phát sinh do tính đặc thù của cấu trúc cơ sở dữ liệu và sự kết hợp của nhiều theme, plugin từ nhiều nguồn khác nhau. Để xử lý triệt để, bạn có thể lựa chọn giữa việc sử dụng plugin xử lý tự động trong thời gian thực hoặc sử dụng các công cụ thay đổi trực tiếp dữ liệu gốc để khắc phục tận gốc vấn đề.

7.1. Sử dụng Plugin Really Simple SSL

Đây là giải pháp nhanh nhất và phù hợp cho người mới bắt đầu. Plugin Really Simple SSL sẽ tự động:

  • Bật HTTPS cho toàn bộ website
  • Chuyển hướng HTTP → HTTPS
  • Phát hiện và sửa phần lớn lỗi Mixed Content theo thời gian thực

Cách thực hiện:

  • Vào Plugins => Add New và tìm “Really Simple SSL”. Cài đặt và kích hoạt plugin.
mixed content
Cài đặt và kích hoạt plugin Really Simple SSL
  • Sau khi kích hoạt, plugin sẽ tự kiểm tra cấu hình SSL và yêu cầu bạn bấm “Activate SSL”.
mixed content
Bấm Activate SSL
  • Trang web sẽ tự động chuyển toàn bộ traffic sang HTTPS và giảm thiểu đáng kể lỗi Mixed Content.

⚠️ Lưu ý: Plugin này xử lý bằng cách buộc trình duyệt tải tài nguyên qua HTTPS, nhưng không thay đổi URL trong database. Vì vậy, nó là giải pháp nhanh, nhưng không phải giải pháp triệt để.

Nếu bạn muốn xử lý tận gốc, hãy kết hợp thêm phương pháp ở phần 7.2.

7.2. Sử dụng Plugin Better Search Replace

Nếu bạn muốn loại bỏ triệt để tất cả URL HTTP cũ, plugin Better Search Replace là lựa chọn tối ưu. Nó giúp bạn tìm và thay thế toàn bộ đường dẫn HTTP trong database chỉ với vài thao tác.

Cách thực hiện:

  • Cài đặt plugin Better Search Replace từ Thư mục Plugin WordPress.
mixed content
Cài đặt plugin Better Search Replace
  • Mở plugin và trong ô Search for, nhập URL HTTP cũ, ví dụ: http://yourdomain.com
  • Trong ô Replace with, nhập URL HTTPS mới: https://yourdomain.com
  • Chọn toàn bộ bảng trong database để thay thế đồng bộ.
  • Chạy Dry Run để xem trước số lượng URL sẽ được thay thế.
  • Khi đã chắc chắn, chạy thay thế thật.
mixed content
Nhấn Dry Run để xem trước số lượng URL sẽ được thay thế. Khi đã chắc chắn, chạy thay thế thật

Sau khi hoàn tất, bạn có thể xóa plugin để dọn dẹp hệ thống.

8. Xử lý các trường hợp Mixed Content “vô hình” (Ghost Mixed Content) và lỗi nâng cao

Trong thực tế vận hành, nhiều trường hợp website vẫn báo lỗi Mixed Content “vô hình” dù bạn đã dọn dẹp sạch database và cấu hình chuyển hướng hoàn tất. Bản chất của các lỗi này nằm ở những tài nguyên tĩnh bị lưu đệm (cache), các liên kết được ghi trực tiếp vào tệp mã nguồn hoặc do sự chênh lệch giao thức giao tiếp giữa các thành phần máy chủ.

Để khắc phục các điểm nghẽn kỹ thuật phức tạp này, bạn cần tiến hành can thiệp chuyên sâu theo các hướng dẫn dưới đây.

8.1. Lỗi bộ nhớ đệm CSS của các Page Builder (Elementor, Divi)

Các công cụ xây dựng trang như Elementor hoặc Divi thường tự động tạo ra các file CSS tĩnh và lưu trong thư mục wp-content/uploads/elementor/css/. Các file CSS này lưu trữ các đường dẫn tuyệt đối (bao gồm cả link ảnh nền, font chữ) tại thời điểm thiết kế. Nếu bạn chuyển đổi HTTPS sau khi thiết kế xong, các file CSS tĩnh này vẫn giữ link http:// cũ.

Để khắc phục tình trạng này, bạn hãy làm theo các bước sau:

  • Bước 1: Truy cập vào quản trị WordPress.
  • Bước 2: Chọn Elementor -> Tools (Công cụ).
  • Bước 3: Tại tab General, nhấn vào nút Regenerate Files & Data (Tái tạo tệp & dữ liệu) để xóa các file CSS cũ và buộc hệ thống tạo lại các file CSS mới chạy hoàn toàn dưới dạng HTTPS.

✅ Mẹo nhỏ: Sau khi bạn nhấn “Regenerate Files & Data” trong Elementor, hãy nhớ xóa toàn bộ bộ nhớ đệm của các plugin tạo cache (như WP Rocket, LiteSpeed Cache, W3 Total Cache) và bộ nhớ đệm trình duyệt. Nếu không xóa cache, người dùng và trình duyệt vẫn sẽ tải lại phiên bản cũ của file CSS vốn đang chứa các liên kết HTTP lỗi.

8.2. Đường dẫn được mã hóa cứng (Hardcoded) trong Theme/Plugin

Một số lập trình viên có thói quen viết trực tiếp liên kết tuyệt đối dạng http://yourdomain.com/… vào bên trong các file cấu hình, file functions.php hoặc file template của giao diện. Do các liên kết này nằm trong file vật lý trên server chứ không nằm trong database, việc sử dụng plugin thay thế dữ liệu database sẽ không có tác dụng.

Cách khắc phục như sau:

  • Bạn cần tải thư mục giao diện (theme) hiện tại về máy tính.
  • Sử dụng các phần mềm soạn thảo code chuyên dụng (như Visual Studio Code, Sublime Text) và sử dụng tính năng Find in Files (Tìm kiếm trong toàn thư mục) để quét từ khóa http://yourdomain.com.
  • Thay đổi các liên kết tìm thấy thành đường dẫn tương đối (ví dụ: /wp-content/…) hoặc đổi trực tiếp sang https://.

8.3. Chênh lệch giao thức do chạy sau Proxy ngược (Reverse Proxy / Load Balancer)

Trường hợp này thường xảy ra khi website chạy trên các hệ thống VPS sử dụng Nginx làm Proxy ngược đứng trước Apache, hoặc chạy sau hệ thống cân bằng tải (Load Balancer). Máy chủ gốc (Apache/PHP-FPM) nhận yêu cầu từ Nginx qua cổng HTTP (cổng 80), do đó PHP hiểu nhầm rằng website đang chạy không an toàn và liên tục tạo ra các liên kết nội bộ dạng http://, dẫn đến lỗi Mixed Content liên tục hoặc lỗi vòng lặp chuyển hướng (Redirect Loop).

Để khắc phục, bạn hãy thêm đoạn mã sau vào ngay phía dưới thẻ mở <?php trong file wp-config.php để hướng dẫn WordPress nhận diện đúng giao thức HTTPS được truyền qua proxy:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}

Câu hỏi thường gặp

Mixed Content có ảnh hưởng xấu đến thứ hạng SEO không?

Có. Khi website có Mixed Content, trình duyệt cảnh báo “Not secure”, làm giảm trải nghiệm người dùng và độ tin cậy của trang. Google ưu tiên các trang HTTPS hoàn toàn an toàn, vì vậy nội dung hỗn hợp có thể ảnh hưởng xấu đến thứ hạng SEO và giảm khả năng hiển thị trên kết quả tìm kiếm.

Làm thế nào để xử lý hình ảnh từ nguồn bên ngoài không hỗ trợ HTTPS?

Nếu hình ảnh từ nguồn bên ngoài không hỗ trợ HTTPS, bạn có vài lựa chọn:

  • Tải về và lưu trên server của bạn: Sau đó phục vụ hình ảnh qua HTTPS từ chính website.
  • Sử dụng dịch vụ trung gian hỗ trợ HTTPS như CDN hoặc proxy an toàn.
  • Thay thế bằng hình ảnh khác hỗ trợ HTTPS nếu có thể.

Sự khác biệt giữa lỗi "Your connection is not private" và "Mixed Content" là gì?

Cốt lõi, Your connection is not private” là lỗi toàn trang, còn Mixed Content chỉ xảy ra với một số tài nguyên trên trang.

  • “Your connection is not private” xuất hiện khi toàn bộ trang web không được bảo mật do chứng chỉ SSL lỗi, hết hạn hoặc không hợp lệ. Trình duyệt cảnh báo người dùng rằng kết nối hoàn toàn không an toàn.
  • “Mixed Content” xảy ra khi trang chính dùng HTTPS nhưng một số tài nguyên (hình ảnh, CSS, JS) vẫn tải qua HTTP. Trang vẫn hiển thị, nhưng trình duyệt cảnh báo rằng một phần nội dung không an toàn, gây rủi ro bảo mật.

Có thể lờ đi cảnh báo Mixed Content nếu đó chỉ là hình ảnh không?

Không nên lờ đi vì:

  • Trình duyệt vẫn đánh dấu trang là “Not secure”, ảnh hưởng đến niềm tin người dùng.
  • Có thể mở ra lỗ hổng bảo mật nếu các tài nguyên khác (JS, CSS) cũng chưa an toàn.
  • Google ưu tiên các trang HTTPS hoàn toàn, vì vậy để tối ưu SEO, mọi tài nguyên nên phục vụ qua HTTPS.

Kết luận

Qua bài viết, bạn đã nắm được từ nguyên nhân, phân loại, tác hại đến các cách phát hiện và khắc phục lỗi Mixed Content một cách nhanh chóng và hiệu quả. Dù bạn là quản trị viên mới hay đã có kinh nghiệm, các phương pháp từ DevTools, plugin WordPress, đến thao tác trực tiếp trên database đều giúp bạn đưa website trở lại trạng thái HTTPS hoàn toàn an toàn.

Mời bạn truy cập vào blog của VinaHost TẠI ĐÂY để theo dõi thêm nhiều bài viết mới. Hoặc nếu bạn muốn được tư vấn thêm thì có thể liên hệ với chúng tôi qua:

Bài viết liên quan
Bình luận
Subscribe
Notify of
guest
0 Góp ý
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Tổng lượt truy cập: lượt xem
Zalo (08:00 AM - 05:00 PM)
scroll_top