Problem
The getPod() function in src/utils/headerFooterHelpers.ts assumes pods are at the origin (subdomain pattern), which breaks path-based pod servers.
Current code (line 17-20):
exportfunctiongetPod(): NamedNode{// @@ TODO: This is given that mashlib runs on NSS - might need to change when we want it to run on other Pod serversreturnsym(document.location.origin).site()}The TODO comment acknowledges this limitation.
Impact
When using a path-based pod server (e.g., http://server.com/alice/), after login:
- WebID:
http://server.com/alice/profile/card#me ✓ getPod() returns: http://server.com/ ✗- Profile guess becomes:
http://server.com/profile/card#me ✗ - Should be:
http://server.com/alice/profile/card#me ✓
This causes 404 errors when mashlib tries to load the user's profile.
Affected Servers
- Any path-based pod server
- CSS (Community Solid Server) supports both subdomain and path patterns
- JSS (JavaScript Solid Server) uses path pattern
Suggested Fix
Derive the pod root from the logged-in user's WebID rather than assuming document.location.origin:
exportfunctiongetPod(): NamedNode{constuser=authn.currentUser()if(user){// Extract pod root from WebID's pim:storage or by conventionconststorage=getStorage(user)if(storage)returnstorage}// Fallback to origin-based (subdomain pattern)returnsym(document.location.origin).site()}Or use the pim:storage triple from the user's profile which explicitly declares the pod root.
Environment
- solid-ui version: latest (via mashlib CDN)
- Server: JSS (JavaScript Solid Server) with path-based pods
Problem
The
getPod()function insrc/utils/headerFooterHelpers.tsassumes pods are at the origin (subdomain pattern), which breaks path-based pod servers.Current code (line 17-20):
The TODO comment acknowledges this limitation.
Impact
When using a path-based pod server (e.g.,
http://server.com/alice/), after login:http://server.com/alice/profile/card#me✓getPod()returns:http://server.com/✗http://server.com/profile/card#me✗http://server.com/alice/profile/card#me✓This causes 404 errors when mashlib tries to load the user's profile.
Affected Servers
Suggested Fix
Derive the pod root from the logged-in user's WebID rather than assuming
document.location.origin:Or use the
pim:storagetriple from the user's profile which explicitly declares the pod root.Environment