修改前
return false;
return { evidence: null, errors: ["尚未完成格式預檢"] };
status.textContent = "尚未完成格式預檢";
修改後
const forbiddenHosts = new Set(["localhost", "127.0.0.1", "::1", "example.com", "example.net", "example.org"]);
try {
const url = new URL(value);
const host = url.hostname.toLowerCase();
const isExampleSubdomain = [".example.com", ".example.net", ".example.org"].some((suffix) => host.endsWith(suffix));
const isForbidden = forbiddenHosts.has(host) || host.endsWith(".localhost") || isExampleSubdomain;
return url.protocol === "https:" && url.username === "" && url.password === "" && !isForbidden && host.includes(".");
} catch {
return false;
}
return { evidence: null, errors: ["尚未完成其餘欄位預檢"] };
const urlValue = document.querySelector("#url").value.trim();
status.textContent = isProductionUrl(urlValue)
? "URL 格式預檢通過;仍需人工開啟確認"
: "請輸入非 example.com、非 localhost 的 HTTPS Production URL";