Add HTTP headers checker and tests

This commit is contained in:
Keith Casko
2026-07-23 05:53:14 -04:00
parent 820f271195
commit 7b77c2261a
7 changed files with 1219 additions and 172 deletions
+142 -7
View File
@@ -15,10 +15,12 @@
<main class="page-shell">
<header class="site-header">
<p class="eyebrow">BYTEGEIST TOOLBOX</p>
<h1>Practical Website and Network Tools</h1>
<p class="description">
Check a website's current status, inspect its public DNS records,
or review its SSL certificate.
review its SSL certificate, or analyze its HTTP response headers.
</p>
</header>
@@ -49,12 +51,22 @@
>
SSL Certificate
</button>
<button
id="headers-tab"
class="tool-tab"
type="button"
data-tool="headers-tool"
>
HTTP Headers
</button>
</nav>
<!-- Website Status Checker -->
<section id="status-tool" class="tool-panel">
<header class="tool-header">
<h2>Website Status Checker</h2>
<p class="tool-description">
Check whether a public website is responding right now and view its
status code, response time, redirects, and final destination.
@@ -80,12 +92,20 @@
</div>
</form>
<p id="status-message" class="status-message" aria-live="polite"></p>
<p
id="status-message"
class="status-message"
aria-live="polite"
></p>
<section id="result-panel" class="result-panel" hidden>
<div class="result-heading">
<h3>Current Status</h3>
<span id="online-badge" class="status-badge"></span>
<span
id="online-badge"
class="status-badge"
></span>
</div>
<dl class="result-grid">
@@ -112,6 +132,7 @@
<div class="final-url-block">
<span>Final URL</span>
<a
id="final-url"
href="#"
@@ -126,6 +147,7 @@
<section id="dns-tool" class="tool-panel" hidden>
<header class="tool-header">
<h2>DNS Lookup</h2>
<p class="tool-description">
Look up public A, AAAA, CNAME, MX, TXT, and NS records for a domain.
</p>
@@ -150,17 +172,31 @@
</div>
</form>
<p id="dns-message" class="status-message" aria-live="polite"></p>
<p
id="dns-message"
class="status-message"
aria-live="polite"
></p>
<section id="dns-result-panel" class="result-panel" hidden>
<div class="result-heading">
<h3>DNS Records</h3>
<span id="dns-hostname" class="hostname-badge"></span>
<span
id="dns-hostname"
class="hostname-badge"
></span>
</div>
<div id="dns-records" class="dns-records"></div>
<div
id="dns-records"
class="dns-records"
></div>
<p id="dns-checked-at" class="dns-checked-at"></p>
<p
id="dns-checked-at"
class="dns-checked-at"
></p>
</section>
</section>
@@ -277,6 +313,105 @@
</div>
</section>
</section>
<!-- HTTP Headers Checker -->
<section id="headers-tool" class="tool-panel" hidden>
<header class="tool-header">
<h2>HTTP Headers Checker</h2>
<p class="tool-description">
Inspect a website's response headers and see which common security
headers are present or missing.
</p>
</header>
<form id="headers-form" class="tool-form">
<label for="headers-url-input">Website URL</label>
<div class="input-row">
<input
id="headers-url-input"
name="url"
type="url"
placeholder="https://example.com"
autocomplete="url"
required
>
<button id="headers-button" type="submit">
Check Headers
</button>
</div>
</form>
<p
id="headers-message"
class="status-message"
aria-live="polite"
></p>
<section id="headers-result-panel" class="result-panel" hidden>
<div class="result-heading">
<h3>Header Results</h3>
<span
id="headers-score-badge"
class="hostname-badge"
></span>
</div>
<dl class="result-grid">
<div>
<dt>Status</dt>
<dd id="headers-status">-</dd>
</div>
<div>
<dt>Redirects</dt>
<dd id="headers-redirects">-</dd>
</div>
<div>
<dt>Security headers</dt>
<dd id="headers-score">-</dd>
</div>
<div>
<dt>Checked at</dt>
<dd id="headers-checked-at">-</dd>
</div>
</dl>
<div class="final-url-block">
<span>Final URL</span>
<a
id="headers-final-url"
href="#"
target="_blank"
rel="noopener noreferrer"
></a>
</div>
<section class="headers-section">
<h4>Security Header Review</h4>
<div
id="security-header-results"
class="security-header-results"
></div>
</section>
<section class="headers-section">
<h4>All Response Headers</h4>
<div
id="all-header-results"
class="all-header-results"
></div>
</section>
</section>
</section>
</main>
<!-- Load browser JavaScript after the page elements exist. -->