Check that browsers are redirected from HTTP to HTTPS
Why it matters
The scanner (a crawler user agent) got the page over plain http while the https site tells browsers to use https for at least a year, and many servers redirect browsers yet answer crawlers over http, which is harmless. If browsers get the page over http too, a first-time visitor can be read or changed on the network.
The fix
- Request the page the way a browser does: curl -sI -A 'Mozilla/5.0' http://example.com/ . A 301 or 308 to https:// means visitors are fine and nothing needs to change.
- If the browser request also answers 200, make the port 80 site answer every request with a 301 redirect to the same host and path on https://, whatever the user agent.
- If the site is behind Cloudflare or another CDN that connects to this server over plain http (Cloudflare Flexible mode), this redirect loops. Switch the CDN to Full (strict) first, or redirect at the CDN instead (Always Use HTTPS).
bash
curl -sI -A 'Mozilla/5.0' http://example.com/ | head -n 3 # expected: HTTP/1.1 301 Moved Permanently # Location: https://example.com/
The examples use example.com. Replace it with your own domain.
Related
- Reported by the HTTP to HTTPS redirect check
- Serve the site over HTTPS
- Stop redirecting HTTPS to HTTP
- Redirect HTTPS straight to the other host's HTTPS page
- Redirect HTTP to HTTPS
- Redirect HTTP to HTTPS instead of answering an error
- Fix the broken HTTPS redirect chain
- Shorten the redirect chain
- Fix the HTTP redirect chain
- Redirect HTTP straight to HTTPS
- Answer HTTP with a redirect to HTTPS
- Redirect www and apex to one host
- Make the www or apex name work over HTTPS
Scan your domain to see whether this applies to you.