UNPKG

happy-dom

Version:

Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. It includes many web standards from WHATWG DOM and HTML.

28 lines (26 loc) 944 B
import CookieSameSiteEnum from '../enums/CookieSameSiteEnum.js'; import URL from '../../url/URL.js'; import ICookie from '../ICookie.js'; /** * Cookie string. */ export default class CookieURLUtility { /** * Returns "true" if cookie matches URL. * * @param cookie Cookie. * @param url URL. * @returns "true" if cookie matches URL. */ public static cookieMatchesURL(cookie: ICookie, url: URL): boolean { const isLocalhost = url.hostname === 'localhost' || url.hostname.endsWith('.localhost'); return ( (!cookie.secure || url.protocol === 'https:' || isLocalhost) && (!cookie.domain || url.hostname.endsWith(cookie.domain)) && (!cookie.path || url.pathname.startsWith(cookie.path)) && // @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value ((cookie.sameSite === CookieSameSiteEnum.none && cookie.secure) || cookie.originURL.hostname === url.hostname) ); } }