Fix "Mixed Content" Warnings for Good
Why one http:// image breaks your padlock, how to find every mixed-content source fast, and the CSP one-liner that ends the whole class.
Short answer
Find every http:// subresource, rewrite to https://, then consider upgrade-insecure-requests in CSP as a safety net. One mixed image can undo the trust signal of an otherwise careful HTTPS deploy.
Why it matters
Browsers treat mixed content as a trust problem. Active mixed content is blocked. Passive mixed content still marks the page as not fully secure.
Users who were told the site is "on HTTPS" notice the broken padlock and support tickets follow.
Readers skimming fix mixed content warnings often stop at definitions. The part that prevents incidents is the verification step after the change - and the habit of re-checking after the next deploy that touches the same layer.
Find the sources
DevTools Security and Console panels list mixed content.
Also search templates and CMS bodies for hard-coded http:// URLs - themes and old content fields are usual suspects.
Common failure mode for fix mixed content warnings: staging looks fine, production still serves the old config because a CDN, load balancer, or second vhost was never updated. Always verify the hostname customers hit.
Fix and prevent
Rewrite assets to HTTPS at the source. For a transitional net, CSP upgrade-insecure-requests helps, but cleaning the source is still required.
Re-scan after deploy. Do not leave upgrade-insecure-requests as the permanent excuse for dirty content.
If this section on fix mixed content warnings becomes a recurring ticket, automate the check. Manual one-offs rot; a post-deploy assertion or weekly grade keeps the control honest.
Config to copy
Content-Security-Policy: upgrade-insecure-requests
Paste carefully. Test on staging first if the setting can lock users out.
What to do this week
- Open production in DevTools and list mixed content warnings.
- Rewrite hard-coded http:// assets in CMS/templates.
- Optionally add upgrade-insecure-requests while cleaning.
- Hard-refresh and re-scan until the warning is gone.
HTTPS on the document is not enough if assets still speak HTTP.
Update log (1)
2026-05-14Editorial form rewrite for length and uniqueness.
Sources + verification
Practical guidance based on mainstream browser behavior, common reverse-proxy configuration, and widely published RFCs and vendor docs. Verify on your own stack with curl, browser devtools, and a re-scan after each change.