If a user bookmarks a page with a LINK PURL, the agent MUST save the the PURL as the URL to be resolved when the bookmark is selected. When a page with a LINK PURL is bookmarked, the REAL URL SHOULD be saved as well, but not as the URL to be resolved. If the agent does save the REAL URL, it MUST save the most recent REAL URL returned by the PURL server.
When an agent resolves an ANCHOR PURL, and there is no LINK PURL in the returned page, it SHOULD behave as though the ANCHOR PURL is a LINK PURL in the returned page.
In the diagram below, AP is an ANCHOR PURL in a webpage. Resolving AP returns an HTTP 302 response containing the REAL URL, R(AP). Resolving R(AP) returns a page containing a LINK PURL, LP. Resolving LP returns an HTTP 302 response containing R(LP).
If AP and LP are the same, then there are no conflicts. If AP and LP are different, but R(AP) and R(LP) are the same, then LP SHOULD be used by the agent for display and bookmarking. However, if R(AP) and R(LP) are different, then AP SHOULD be used for display and bookmarking.
Reasoning:
If R(AP) and R(LP) are the same, then two different PURLs resolve
to a single REAL URL. The LP is in the page, and presumably
selected by the author of the page, and should be used.
If R(AP) and R(LP) are different, but R(AP) actually returned
the page, then it can be assumed that LP is incorrect,
and AP should be used.
