What each header row is checking
Strict-Transport-Security passes with a max-age of 15552000 seconds (180 days) or more and is marked warn below that. The message notes includeSubDomains and preload when present. Content-Security-Policy is the heaviest row: missing is a fail (a report-only policy counts as missing), and a policy that allows 'unsafe-inline' scripts, 'unsafe-eval' or a bare * source passes only partially.
X-Frame-Options passes with DENY or SAMEORIGIN, or when the CSP has a frame-ancestors directive. X-Content-Type-Options needs nosniff. Referrer-Policy is a warn when missing and scores half when set to unsafe-url or no-referrer-when-downgrade, which leak full URLs. Permissions-Policy is a small bonus for restricting camera, geolocation and similar features.
Informational rows that carry no weight
Cross-Origin-Opener-Policy and Cross-Origin-Resource-Policy are reported as present or not set but do not move the score. They are optional hardening. X-XSS-Protection set to anything other than 0 gets a note that the header is deprecated and that CSP has replaced it.
Three rows warn about information leakage rather than protection: a Server header that contains a version number, any X-Powered-By header, and X-AspNet-Version. None of these change the score, but each one tells an attacker which known bugs to try first, and all three are easy to remove in the web server or framework configuration.
TLS, redirects and the certificate card
The first request goes to https. If the certificate is not trusted the finding says why, the score is capped at 20 and browsers would show a warning page. If https fails entirely the scanner falls back to http and caps the score at 30. The negotiated protocol is reported, with TLS 1.0 and 1.1 marked as fail, and a certificate expiring within 14 days gets a warning.
A separate request to http://host/ checks whether the server redirects to https. Yes earns 5 points, no is a warning, and unknown means the http request itself failed. The Certificate card lists protocol, subject, issuer, expiry with days remaining and the trust result, which is enough to spot a missing intermediate or a wrong hostname. For the full extension list paste the certificate into the certificate decoder.
Cookies and mixed content
Every Set-Cookie header on the first response is parsed into the Cookies table with its Secure, HttpOnly and SameSite attributes. A cookie without Secure on an https site, or without HttpOnly, counts as insecure. Each costs 3 points up to a maximum of 10. A missing SameSite is shown as not set (Lax), which is what browsers assume.
On an https page the HTML is scanned for script, img, iframe, link, audio, video and source tags whose src or href starts with http://. Up to ten such URLs are listed under the findings and the page loses 5 points, because browsers block or downgrade those resources and show a broken padlock.
- Session cookies need Secure and HttpOnly; add SameSite=Lax or Strict as well
- Cookies set by JavaScript or on later requests are not seen by a single fetch
- Replace http:// asset URLs with https:// or with relative paths
security.txt and what the scanner cannot see
The third request fetches /.well-known/security.txt and passes if it returns 200 and contains a Contact: line, the minimum RFC 9116 asks for. It is informational: publishing one gives researchers a way to reach you, and the scan's note tells you whether yours is in place.
Because only one page is fetched, headers set on other routes, by edge rules or after login are not graded, and single-page apps that set policies in meta tags may score differently from their live behaviour. The scan is not a penetration test. To check which network ports are open on the same host, use the port scanner.