Friday, May 19th, 2006
Eventsites: serverless web-development
Peter Nixey has developed a single-page Ajax application that stores nothing on the server side of his application, but rather uses the power of mashup and talks to external web services (Flickr, evdb, Google Maps).
Peter has written up a few articles to explain the application.
- Firstly, he explains the serverless model
- Secondly, the event sites architecture is explained
- Componentising the web
These articles talk about details of the implementation, and how he solved issues such as making XHR cross-domain (in this case with a simple server proxy)













crikey, thats the coolest damned thing / concept i’ve seen in a while. Also, love the minimalist proxy. Such a really cool concept, taking mashups to the next level.
If you add in client-side storage in a Flash object, it’s not a hard leap to kiosk type software running in a browser on a computer without an Internet connection.
s/proxy/security hole/
That PHP is going to let anyone read any local file on the filesystem that apache can see. I wish people wouldn’t post dumb things like that, because others are going to blindly copy it.
Heh “please download Firefox” it says. Well, besides the slew of JS errors messages i get.
mypage.php?url=/etc/passwd
Id probably use something like that with this script. Dont forget to sanitize that $_GET['url']!
Oh yes, minimalist proxy, (nearly) maximalist read access to the filesystem due to not sanitizing user input in any way…
Martin,
Good point. I was actually sanitising requests to make sure they were external when I first wrote the app but then forgot to do the same after deployment.
Very good point, horrendous security hole - thanks for pointing it out.
You can use Flash for cross-domain GETs and POSTs. See Flash4AJAX: http://blog.monstuff.com/archives/000280.html
The main restriction is that the services you’re targetting need to allow this kind of access, thru a cross-domain policy file within their domain.
Flash 8.5 will allow arbitrary HTTP requests, enabling the complete array of HTTP methods (HEAD, DELETE, …)