/ @steike


Need a quick three-line HTML wrapper to test something browser-related? Like, does this page still work if wrapped in an iframe? Does <video src=javascript:blah> run the javascript? This might help.

url: '' pairs
pairs: pair ('&' pair)*
pair: lhs '=' text
    | lhs ':=' modifier '[' nested-text ']'
    | lhs
lhs: word                     -- attribute
   | word '[' things ']'      -- tag

Any request to where the path starts with /: (or the query starts with ?:) returns a dummy page based on the contents of the URL:


Raw output (no content type)


Set HTTP headers (note that you don't repeat the : for each argument)


You can put the instructions in the path or in the query string; whichever one starts with a : is used. (MSIE will content-type sniff this one)


HTTP status codes. Headers can be abbreviated as long as they are unique.


Generate HTML tags (this also sets the content-type)


name:=[...] syntax lets you have embedded & characters; useful if you want to link back to this.


A different origin (Chrome will not prompt for this one)


Arguments are URL-decoded by default. You can use :=u[...] to avoid that so you can nest things properly without a %252525 nightmare. (Chrome prompts for this one)


If the quoting gets in the way you can fall back to base64 for any argument.


Run a nested version of this and generate HTML.


Same, but generate a data URL (this is same-origin in Firefox)


You can generate tiny PNGs by listing a bunch of RGB values, one per pixel.

For services that parse/unparse other people URLs, you can also use (,) instead of [&].

This also works on if you want to make a more readable example.

Complaints to @steike or @steike.