<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" 
	>
<channel>
	<title>
	Comments on: LH Beacon	</title>
	<atom:link href="https://lhero.org/portfolio/lh-beacon/feed/" rel="self" type="application/rss+xml" />
	<link>https://lhero.org/portfolio/lh-beacon/</link>
	<description>Digital Sovereignty for everyone</description>
	<lastBuildDate>Thu, 22 Oct 2026 19:47:07 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>
		By: Peter Shaw		</title>
		<link>https://lhero.org/portfolio/lh-beacon/#comment-1537645</link>

		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 19:47:07 +0000</pubDate>
		<guid isPermaLink="false">https://lhero.org/?post_type=lh-portfolio&#038;p=149600#comment-1537645</guid>

					<description><![CDATA[Fix nonce_invalid refusals after a sign-in and on stale cached pages. A visitor who signs in on a page sends that page&#039;s logged-out nonce at pagehide, by which time the browser already holds the new login cookie, so the nonce failed against the new user. The collect route now falls back to accepting a logged-out nonce and dispatches the beacon as user 0, never as the user who just signed in. The script also refreshes the nonce at load when the page came from an old cache, instead of waiting until something is queued, so an error reported just before the tab hides no longer goes out with a stale nonce. The 30-minute check now calls the refresh through a wrapper so no timer argument can force it.]]></description>
			<content:encoded><![CDATA[<p>Fix nonce_invalid refusals after a sign-in and on stale cached pages. A visitor who signs in on a page sends that page&#8217;s logged-out nonce at pagehide, by which time the browser already holds the new login cookie, so the nonce failed against the new user. The collect route now falls back to accepting a logged-out nonce and dispatches the beacon as user 0, never as the user who just signed in. The script also refreshes the nonce at load when the page came from an old cache, instead of waiting until something is queued, so an error reported just before the tab hides no longer goes out with a stale nonce. The 30-minute check now calls the refresh through a wrapper so no timer argument can force it.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Peter Shaw		</title>
		<link>https://lhero.org/portfolio/lh-beacon/#comment-1537478</link>

		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Sat, 17 Oct 2026 14:40:11 +0000</pubDate>
		<guid isPermaLink="false">https://lhero.org/?post_type=lh-portfolio&#038;p=149600#comment-1537478</guid>

					<description><![CDATA[Stop LiteSpeed caching the nonce route. LiteSpeed&#039;s REST cache was serving one stored response from /lh-beacon/v1/nonce to every logged-out visitor despite the no-cache headers, so the script&#039;s refresh brought back a nonce that was itself stale and beacons from long-lived cached pages were refused as nonce_invalid. The route now opts out through LiteSpeed Cache&#039;s litespeed_control_set_nocache action and the X-LiteSpeed-Cache-Control: no-cache response header.]]></description>
			<content:encoded><![CDATA[<p>Stop LiteSpeed caching the nonce route. LiteSpeed&#8217;s REST cache was serving one stored response from /lh-beacon/v1/nonce to every logged-out visitor despite the no-cache headers, so the script&#8217;s refresh brought back a nonce that was itself stale and beacons from long-lived cached pages were refused as nonce_invalid. The route now opts out through LiteSpeed Cache&#8217;s litespeed_control_set_nocache action and the X-LiteSpeed-Cache-Control: no-cache response header.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
