Mixed Content là gì? Vì sao website đã có SSL vẫn báo không an toàn và cách xử lý
Mixed Content là gì? Hiểu đúng trong 1 phút
Mixed content là tình trạng một trang web được tải bằng HTTPS nhưng một hoặc nhiều tài nguyên bên trong trang vẫn được tải bằng HTTP. Những tài nguyên này có thể là ảnh, file CSS, JavaScript, iframe, font hoặc script bên thứ ba. Khi đó, trang nhìn có vẻ đang dùng kết nối an toàn, nhưng thực tế vẫn tồn tại điểm tải không an toàn.
Nếu cần hiểu nhanh thì mixed content đơn giản là: Trang chính đã dùng HTTPS nhưng các đường dẫn tài nguyên bên trong (resource URL) vẫn tải qua HTTP.

Ví dụ, một landing page doanh nghiệp chạy trên HTTPS nhưng banner đầu trang lại được gọi từ http://.... Khi người dùng truy cập, trình duyệt có thể hiển thị cảnh báo mixed content, bỏ biểu tượng ổ khóa hoặc chặn một phần nội dung.
Điểm quan trọng là có SSL không đồng nghĩa toàn bộ trang đã an toàn. SSL chỉ bảo vệ đúng những gì đang đi qua kết nối HTTPS. Nếu trong cùng trang vẫn còn nội dung gọi qua HTTP, website vẫn có thể bị đánh giá là website không an toàn / Not Secure ở một mức độ nào đó.
Cách nhớ ngắn gọn:
- Trang chính dùng HTTPS.
- Tài nguyên con vẫn dùng HTTP.
- Trình duyệt cảnh báo hoặc tự chặn một phần nội dung.
Mixed content xuất hiện trong trường hợp nào?
- Website đã bật HTTPS và HTTP nhưng dữ liệu cũ vẫn còn URL HTTP.
- Ảnh, CSS, JS, iframe hoặc font vẫn tải từ nguồn HTTP.
- Quá trình migration từ HTTP sang HTTPS chưa thay đồng bộ toàn site.
- Code nhúng bên thứ ba vẫn giữ đường dẫn cũ gây nên cảnh báo mixed content.
Ví dụ dễ hiểu cho người quản trị website
Một tình huống rất phổ biến là landing page của doanh nghiệp đã chạy HTTPS, nhưng ảnh banner hoặc logo vẫn lấy từ đường dẫn HTTP cũ. Trường hợp khác, website WordPress đã cài SSL nhưng theme hoặc plugin cũ vẫn nhúng script qua HTTP. Kết quả là website đã có SSL nhưng vẫn báo không an toàn, mất ổ khóa hoặc một số thành phần trên trang không hoạt động như mong đợi.
Có mấy loại mixed content? Loại nào nguy hiểm hơn?
Về thực tế vận hành, mixed content thường được chia thành 2 nhóm chính: passive mixed content và active mixed content. Cả hai đều nên xử lý, nhưng mức độ ưu tiên không giống nhau.
Passive Mixed Content: Ít nguy hiểm hơn nhưng không vô hại
Passive mixed content là các tài nguyên như ảnh, video hoặc audio đang tải bằng HTTP trên một trang HTTPS. Nhóm này thường không trực tiếp điều khiển hành vi của trang như script hay stylesheet, nên mức rủi ro thấp hơn.
Tuy nhiên, “thấp hơn” không có nghĩa là an toàn. Nếu ảnh sản phẩm, hình minh họa hoặc video giới thiệu bị tải qua HTTP, nội dung đó vẫn có thể bị thay đổi trên đường truyền hoặc làm trình duyệt hiển thị cảnh báo. Với website doanh nghiệp, điều này ảnh hưởng trực tiếp tới độ tin cậy thương hiệu.
Active Mixed Content: Mức độ ưu tiên xử lý cao
Active mixed content gồm JavaScript, CSS, iframe hoặc các request API tải bằng HTTP. Đây là nhóm cần ưu tiên sửa trước vì chúng có thể tác động trực tiếp tới cách trang hiển thị và hoạt động.
Nếu trình duyệt phát hiện active mixed content, cơ chế browser blocking (trình duyệt tự chặn thành phần không an toàn) thường được áp dụng mạnh hơn. Hệ quả phổ biến là form không gửi được, layout vỡ, widget chat lỗi hoặc trang render sai.
Trong xử lý thực tế, hãy ưu tiên những trường hợp insecure resource loading (tải tài nguyên không an toàn) liên quan đến JS, CSS, iframe trước, sau đó mới đến ảnh và media.
Loại | Ví dụ | Mức độ rủi ro / ưu tiên xử lý |
|---|---|---|
Passive mixed content | Ảnh banner, logo, video, audio hoặc ảnh trong bài viết cũ. | Ảnh hưởng trust và giao diện, ưu tiên trung bình. Tuy có rủi ro thấp hơn nhưng vẫn gây cảnh báo, nên xử lý sớm |
Active mixed content | File JavaScript qua HTTP, CSS, iframe, embed form, request API. | Rủi ro cao, ưu tiên xử lý ngay vì có thể làm hỏng chức năng trang, ưu tiên rất cao. |

Vì sao website đã có HTTPS vẫn bị lỗi mixed content?
Điểm cần hiểu đúng là: SSL đúng vẫn có thể còn mixed content. Nói cách khác, website đã có SSL vẫn báo không an toàn không có nghĩa chứng chỉ SSL chắc chắn bị lỗi. Trong đa số trường hợp, vấn đề nằm ở tài nguyên chưa được đồng bộ sang HTTPS.

Có thể chia nguyên nhân gây nên mixed content thành 2 nhóm lớn: Nguyên nhân nội bộ từ website và nguyên nhân đến từ bên thứ ba. Với website doanh nghiệp dùng WordPress, đây là lỗi xuất hiện khá thường sau chuyển đổi sang HTTPS.
Nhóm nguyên nhân nội bộ từ website
Các nguyên nhân mixed content nội bộ thường đến từ chính dữ liệu hoặc cấu hình cũ của website:
- Link ảnh hoặc file media cũ trong nội dung bài viết vẫn còn HTTP.
- Theme, template hoặc module nhúng cứng resource URL bằng HTTP.
- File CSS/JS nội bộ đang gọi sai đường dẫn theo kiểu http over https.
- Page builder, theme options hoặc phần cấu hình giao diện vẫn lưu URL cũ.
- Một số landing page được clone từ mẫu cũ nhưng chưa cập nhật HTTPS đồng bộ.
Đây là lý do nhiều website trông như đã chuyển HTTPS hoàn tất nhưng thực tế vẫn lỗi ở từng trang con.
Nhóm nguyên nhân từ bên thứ ba
Nhiều trường hợp insecure resource loading (tải resource qua kết nối không an toàn) không nằm trong source chính mà đến từ dịch vụ tích hợp ngoài:
- Chat widget cũ.
- Tracking script hoặc pixel được copy từ mã nhúng cũ.
- Iframe video, bản đồ, lịch hẹn.
- Font hoặc thư viện kéo từ nguồn ngoài chưa hỗ trợ HTTPS.
- CDN bên ngoài hoặc tài nguyên được host ở domain phụ chưa cập nhật bảo mật.
Khi đó, dù website của bạn đã đúng HTTPS, chỉ cần một đoạn nhúng ngoài còn HTTP là trình duyệt vẫn có thể cảnh báo.
Trường hợp hay gặp trên WordPress
WordPress mixed content là một tình huống rất phổ biến. Thực tế triển khai cho thấy nhiều website đổi Site URL sang HTTPS nhưng database chưa thay hết toàn bộ đường dẫn cũ. Ngoài ra, Plugin bộ nhớ đệm (cache), công cụ nén mã nguồn (minify) hoặc CDN có thể vẫn giữ phiên bản file cũ.
Những lỗi hay gặp gồm:
- Media cũ trong bài viết còn HTTP.
- Theme hoặc page builder lưu đường dẫn cứng.
- Plugin cache/CDN chưa purge sau khi cập nhật HTTPS.
- Mã nhúng form, chat hoặc analytics vẫn là bản cũ.
Vì vậy, với lỗi mixed content trên WordPress thì việc chỉ đổi URL ở phần cài đặt là chưa đủ.
Mixed content ảnh hưởng gì đến bảo mật, trải nghiệm người dùng và SEO?
Mức ảnh hưởng của mixed content cần được nhìn đúng bản chất. Đây là lỗi có tác động rõ ràng tới bảo mật cảm nhận và trải nghiệm người dùng, còn câu chuyện mixed content ảnh hưởng SEO chủ yếu diễn ra theo hướng gián tiếp.
Ảnh hưởng đến bảo mật và niềm tin người dùng
Khi trình duyệt không còn hiển thị secure connection hoặc chuyển sang trạng thái website not secure, người dùng sẽ dè chừng hơn, đặc biệt ở các trang có form điền thông tin, báo giá hoặc đăng nhập. Các tác động dễ thấy gồm:
- Mất biểu tượng ổ khóa trên thanh địa chỉ.
- Hiện cảnh báo “Not Secure”.
- Người dùng ngại điền form tư vấn hoặc để lại dữ liệu.
- Một số tài nguyên HTTP có thể bị sửa, chặn hoặc thay thế trên đường truyền.
Với website B2B, đây là vấn đề về trust signal (dấu hiệu uy tín) nhiều hơn là chỉ một lỗi kỹ thuật.
Ảnh hưởng đến SEO
Nói ngắn gọn, mixed content ảnh hưởng SEO nhưng không phải cứ gặp lỗi này là tụt hạng ngay. Đây không nên được diễn giải như một hình phạt mặc định từ Google trong mọi trường hợp. Tác động SEO thường đến từ các hệ quả gián tiếp:
- CSS hoặc JS quan trọng bị chặn khiến trang render sai.
- Nội dung quan trọng không hiển thị đầy đủ.
- Tốc độ xử lý và trải nghiệm thực tế kém hơn.
- Người dùng thấy thiếu tin cậy và rời trang sớm hơn.
Theo logic của browser security policy (chính sách bảo mật trình duyệt), nội dung không an toàn sẽ bị hạn chế hoặc chặn. Khi điều đó ảnh hưởng tới khả năng hiển thị và sử dụng trang, hiệu quả SEO tổng thể cũng bị kéo xuống theo.

Cách kiểm tra website có bị mixed content hay không?
Tin tốt là bạn không cần quá chuyên kỹ thuật để kiểm tra lỗi mixed content ở mức sơ bộ. Trong đa số trường hợp, cách nhanh nhất vẫn là kiểm tra trực tiếp trên trình duyệt thật, sau đó mới dùng tool hỗ trợ rà thêm.
Dấu hiệu nhận biết nhanh
Bạn nên nghi ngờ có cảnh báo mixed content nếu thấy một trong các dấu hiệu sau:
- Mất biểu tượng ổ khóa dù trang đang mở bằng HTTPS.
- Trình duyệt báo “Not Secure” hoặc cảnh báo bảo mật.
- Ảnh, widget, iframe hoặc script không tải đúng.
- Form, chat box hoặc layout hoạt động bất thường.
Kiểm tra bằng trình duyệt theo cách đơn giản nhất
Đây là cách dễ nhất để kiểm tra lỗi mixed content bằng Developer Tools trên Google Chrome, Edge hoặc Firefox.
- Mở trang cần kiểm tra bằng Chrome, Edge hoặc Firefox.
- Kiểm tra thanh địa chỉ để xác nhận trang đang tải bằng HTTPS nhưng vẫn có dấu hiệu cảnh báo.
- Vào công cụ Inspect bằng cách chuột phải chọn “Inspect”, sau đó mở tab Console hoặc Issues trong Developer Tools.
- Tìm các dòng cảnh báo có chứa URL bắt đầu bằng
http://hoặc thông báo mixed content. - Ghi lại từng URL lỗi để xác định nó thuộc ảnh, CSS, JS, iframe hay script bên thứ ba.
Điểm quan trọng là không chỉ nhìn cảnh báo chung. Bạn cần xác định chính xác URL nào đang còn HTTP để sửa đúng nguồn phát sinh.
Có nên dùng tool online?
Bạn có thể dùng các công cụ test mixed content để rà nhanh toàn trang hoặc quét nhiều URL cùng lúc. Đây là cách hữu ích để sàng lọc ban đầu, nhất là khi website có nhiều landing page. Tuy nhiên, không nên phụ thuộc hoàn toàn vào tool online vì:
- Có tool không render đầy đủ script động.
- Không phải trang nào cũng được quét chính xác.
- Kết quả có thể bỏ sót lỗi chỉ xuất hiện trên một template cụ thể.
Cách an toàn nhất vẫn là dùng tool để hỗ trợ, sau đó kiểm tra lại bằng browser thật ở các trang quan trọng như trang chủ, landing page, form liên hệ và trang dịch vụ.
Cách khắc phục lỗi mixed content trên website
Nguyên tắc cốt lõi khi sửa lỗi mixed content là đưa toàn bộ quá trình tải tài nguyên về HTTPS. Không chỉ trang chính, mọi ảnh, script, stylesheet, iframe và mã nhúng liên quan cũng phải dùng secure resource loading.

Trong thực tế, sửa lỗi hiệu quả không dừng ở việc đổi một vài link. Bạn cần xử lý từ nguồn gốc, xóa cache và kiểm tra lại những trang quan trọng sau khi sửa.
Checklist khắc phục 5 bước
- Xác định tất cả tài nguyên còn HTTP bằng Console, Issues hoặc công cụ quét.
- Đổi từng URL sang HTTPS nếu nguồn đó có hỗ trợ phiên bản bảo mật.
- Sửa nội dung cũ, code nhúng, theme, plugin hoặc template đang gọi HTTP.
- Xóa cache của website, plugin cache, hệ thống minify và CDN nếu có.
- Quét lại rồi kiểm tra thủ công các trang quan trọng để chắc chắn lỗi đã hết.
Đây là checklist ngắn gọn nhưng đủ thực tế để sửa lỗi mixed content ở mức tổng quan.
Lưu ý riêng cho WordPress và website doanh nghiệp phổ thông
Khi khắc phục lỗi mixed content trên WordPress, bạn cần nhớ rằng đổi Site URL sang HTTPS chỉ là bước đầu, những điểm cần kiểm tra thêm gồm:
- Media cũ trong bài viết hoặc landing page.
- Page builder lưu URL cứng trong database.
- Theme options hoặc custom HTML block.
- Plugin third-party như form, chat, bản đồ, tracking.
- Cache/minify/CDN vẫn giữ file cũ.
Nếu cần tìm và thay thế đường dẫn trong database, hãy backup trước khi thao tác. Đây là bước quan trọng để tránh làm sai dữ liệu hàng loạt. Sau khi sửa, đừng quên xóa cache toàn bộ rồi test lại.
Hãy lưu riêng một checklist audit HTTPS để rà lại các trang có traffic cao sau mỗi lần chỉnh sửa website.
Khi nào cần nhờ dev hoặc agency kỹ thuật?
Bạn nên cân nhắc hỗ trợ kỹ thuật nếu rơi vào một trong các trường hợp sau:
- Lỗi nằm trong source code, API hoặc template phức tạp.
- Website có nhiều domain phụ, CDN hoặc tích hợp ngoài.
- Đã đổi URL nhưng trình duyệt vẫn tiếp tục chặn.
- Hệ thống có quá nhiều landing page và khó rà thủ công.
- Bạn cần sửa lỗi cảnh báo website không an toàn (Not Secure) nhưng không rõ nguồn phát sinh ở đâu.
Đây không phải loại lỗi mà ai cũng nên sửa thủ công, đặc biệt với website doanh nghiệp đang hoạt động ổn định. Nếu sửa thiếu hoặc sửa sai, bạn có thể làm phát sinh lỗi giao diện hoặc tracking.
Phân biệt mixed content với các lỗi HTTPS khác
Trong các buổi audit website, mixed content là một lỗi rất hay bị nhầm với lỗi SSL hoặc lỗi redirect. Do đó việc chẩn đoán lỗi đúng cách sẽ giúp xử lý nhanh chóng và tránh mất thời gian.
Lỗi | Dấu hiệu | Bản chất | Hướng xử lý sơ bộ |
|---|---|---|---|
Mixed content | Có HTTPS nhưng mất ổ khóa, có mixed content warning. | Trang HTTPS vẫn tải tài nguyên HTTP. | Tìm URL HTTP còn sót và đổi sang HTTPS. |
SSL certificate hết hạn / sai | Trình duyệt chặn truy cập, cảnh báo chứng chỉ. | Chứng chỉ SSL không hợp lệ hoặc sai domain. | Gia hạn, cài lại hoặc cấu hình đúng chứng chỉ. |
Redirect HTTP sang HTTPS chưa chuẩn | Truy cập HTTP không tự chuyển đúng sang HTTPS. | Rule chuyển hướng cấu hình chưa chuẩn. | Thiết lập lại redirect HTTP sang HTTPS. |
Canonical/internal link còn HTTP | Vẫn có liên kết nội bộ hoặc canonical HTTP. | Lỗi cấu trúc liên kết và tín hiệu lỗi https kỹ thuật. |

Ví dụ thực tế: Vì sao website đã cài SSL vẫn hiện “Not Secure”?
Một website doanh nghiệp dùng WordPress vừa hoàn tất chuyển sang HTTPS và cài SSL hợp lệ. Bề ngoài, mọi thứ có vẻ đúng: trang mở bằng HTTPS, redirect hoạt động, chứng chỉ không lỗi. Tuy nhiên, đội marketing vẫn thấy website đã có ssl vẫn báo không an toàn trên một số landing page.
Nguyên nhân sau khi kiểm tra là phần banner đầu trang và một script chat cũ vẫn gọi từ HTTP. Đây là dạng mixed content website rất thường gặp sau chuyển nền tảng, hệ thống.
Kết quả là trình duyệt bỏ biểu tượng ổ khóa, đồng thời một số thành phần không tải ổn định. Đây không phải lỗi chứng chỉ HTTPS, mà là do các tài nguyên phụ trên trang chưa được chuyển hết sang HTTPS. Chỉ khi sửa đúng những URL còn dùng HTTP, xóa cache và kiểm tra lại, thì cảnh báo ‘Not Secure’ mới biến mất hoàn toàn.
Câu hỏi thường gặp
Mixed content là gì?
Mixed content (nội dung hỗn hợp) là tình trạng một trang web đã có chứng chỉ HTTPS nhưng vẫn tải các tài nguyên phụ (như hình ảnh, video, script, CSS) qua giao thức HTTP không an toàn. Điều này làm suy yếu tính bảo mật của toàn bộ trang web.
Website đã có SSL vẫn báo "Not Secure" có phải do lỗi mixed content không?
Có thể. Nếu bạn đã cài đặt SSL nhưng vẫn thấy cảnh báo "Not Secure" hoặc mất biểu tượng ổ khóa trên thanh địa chỉ, khả năng cao là website đang tồn tại các tài nguyên tải qua HTTP. Bạn cần kiểm tra lại các liên kết tài nguyên trên trang.
Làm thế nào để kiểm tra lỗi mixed content trên website?
- Truy cập website bằng trình duyệt (Chrome, Edge).
- Chuột phải vào trang, chọn Inspect (Kiểm tra).
- Chuyển sang tab Console hoặc Issues.
- Tìm các cảnh báo về "Mixed Content".
- Ghi lại các URL đang tải qua HTTP để tiến hành xử lý.
Cách sửa lỗi mixed content cho người không chuyên?
- Xác định các file lỗi (ảnh, script, font) qua tab Console của trình duyệt.
- Cập nhật các URL đó sang giao thức HTTPS trong cơ sở dữ liệu hoặc cài đặt của theme/plugin.
- Nếu dùng WordPress, hãy sử dụng các plugin hỗ trợ tìm kiếm và thay thế (Search & Replace) URL cũ.
- Xóa toàn bộ cache website và CDN.
- Kiểm tra lại bằng trình duyệt.
Passive và Active mixed content khác nhau như thế nào?
- Passive mixed content: Là ảnh, video, audio. Nó ít nguy hiểm hơn nhưng vẫn gây cảnh báo bảo mật.
- Active mixed content: Là script, iframe, CSS. Loại này rất nguy hiểm vì kẻ tấn công có thể chiếm quyền điều khiển trang web, nên trình duyệt thường chặn nó mặc định.
Mixed content có ảnh hưởng đến SEO không?
Có, nhưng chủ yếu là gián tiếp. Google ưu tiên các trang web an toàn hoàn toàn. Nếu lỗi này làm hỏng layout, chặn các script quan trọng hoặc gây ra cảnh báo "Not Secure" khiến người dùng thoát trang ngay lập tức (tăng tỷ lệ Bounce Rate), thứ hạng SEO của bạn sẽ bị ảnh hưởng tiêu cực.
Tại sao không nên dùng URL tương đối giao thức (protocol-relative URL) nữa?
Trước đây, cách viết //example.com được dùng để tránh lỗi mixed content. Tuy nhiên, hiện nay các chuyên gia không còn khuyến nghị sử dụng cách này vì mọi website hiện đại đều đã hỗ trợ HTTPS. Việc sử dụng HTTPS đầy đủ cho mọi tài nguyên là tiêu chuẩn bảo mật bắt buộc.
Xem thêm:
- HTTP và HTTPS: Điểm khác biệt và tầm quan trọng của HTTPS
- WWW và non-WWW: Khác biệt và cách cấu hình chuẩn SEO
- HTTP Status Code là gì? Bảng mã 1xx - 5xx chi tiết cho SEO
Kết luận
Tóm lại, mixed content là tình trạng trang HTTPS vẫn tải một phần tài nguyên qua HTTP. Đây là lý do phổ biến khiến website đã có SSL nhưng vẫn mất ổ khóa hoặc hiện cảnh báo không an toàn. Thứ tự xử lý nên đi theo hướng: Xác định URL lỗi, ưu tiên sửa active mixed content, xóa cache, rồi kiểm tra lại các trang quan trọng bằng trình duyệt thật.
Với website WordPress hoặc hệ thống có nhiều tích hợp ngoài, cách sửa lỗi mixed content hiệu quả nhất là rà theo checklist và phối hợp với đội kỹ thuật khi lỗi nằm trong code, plugin hoặc dịch vụ bên thứ ba.

.jpg&w=160&q=75)


