| 
View
 

DeepLinkingProblem

This version was saved 19 years, 3 months ago View current version     Page history
Saved by PBworks
on October 27, 2005 at 1:00:56 am
 

See the ProjectWriteup for a description of the deep linking problem.


James has some thoughts on this problem:

 

I played with my own continuation-based framework just around the time

that SISCweb was released (which was much better written!), so I

didn't continue with it beyond a proof-of-concept. I also came across

the 'deep-linking' problem you outline in your write-up.

 

A solution (not a great one I realise) I implemented was as follows.

I reasoned that in most apps, there aren't that many places which

you'd want to actually stop and bookmark it, to return later. You're

never going to bookmark yourself half-way through a credit-card

workflow. Indeed, taking Amazon as an example, pages you'd want

'bookmarkable' would be individual books, your wishlist, and a couple

of others.

 

You'd only really have a few 'entry-points' or 'significant functions'

in the app, for instance

 

- view book

- view wishlist

- view frontpage

- view specific comment on book

 

from which, of course, you'd have k-urls pointing all over the shop.

But as soon as you started from one of those entry-points, the

function would register 'bookmarkable url parameters' such as book-id

and always redirect requests containing k-url paramters to ones which

contained, for instance, a book-id parameter. The page generated by

the following the k-url (ie pages within a current user session) would be stored

temporarily in a hash table, the redirect would bounce the user to a

page with a good URL and a sentinel value. The stored page would be

retrieved from the table and shown, and be removed so that the

redirect would only work the once.

If the page did not exist (ie had been removed from the hash table,

having been served as a redirection end-point) then the

bookmarkabe-url-paramters would be decoded, and the user would start

afresh from the 'entry-point' function appropriately, possibly having

to login again.

 

At the -- significant -- cost of a redirection per page, I was able to

have meaningful, bookmarkable, safe URLS, which didn't contain k-urls

which could be security risks. It also meant that you couldn't

bookmark from within a complicated bit of workflow transaction, but I feel that's a thing that

users just don't naturally want to do: it feels naturally weird.

 

Not a great solution, but quick and dirty. The code was slightly

hairy, but I reckoned with better macrology I could have made it look

fairly clean to a developer who didn't delve too deeply (-:

 

I probably have missed other significant flaws as well though. Do

tell me!

Comments (0)

You don't have permission to comment on this page.