URL Marks

URL Marks are semicolon separated, optional parameters which may be part of the site URL. URL Marks, if any, must appear immediately after the site prefix, start with a semicolon and are always terminated with a slash. FIT uses URL Marks e.g. to control the FIT engine mode (to process non-DOM content such as CSS, JavaScript or images), to define the encoding or enable debugging. URL Marks can also be used by a site or AC to transfer information to a subsequent request.

A URL Mark consists at least of a name, optionally followed by an equals sign (=) and value. Note that the name must be representable both in the URL and as an XML attribute name, and the value both in the URL and as an XML attribute value. URL Marks are path parameters conforming to section 3.3 of rfc3986.

The following example URL passes the URL Marks d and e to the site located at http://fit.example.com/project/site, with a site path of /index.html:

http://fit.example.com/project/site;d=pageend-request-info;e=iso-8859-1/index.html

Trailing Marks

With trailing-marks enabled in config.xml, the marks are moved to the basename of the URL. For sites running on / with a 1:1 URL Map (mapping / on /), all directory segments of the URL path stay the same. Thus the original cookie path can be used and will not be shortened to path=/. You also have to set the origin’s cookie mode to force-transparent (BETA).

This example shows a URL with the marks m and pass. The FIT site is running on / and /shop/productview/?id=4711 is the origin’s path and query string:

http://fit.example.com/shop/productview/;m=is;pass;;index.html?id=4711

Why URL Marks?

URL Marks enable you to modify how FIT processes the request or to encode additional information in links on your site. URL Marks are independent of the main URL and its query string. Therefore, they don’t interfere with source URLs or form submissions, and are naturally passed on to relative links. Note however, that FIT does not retain any URL Marks from the incoming link during URL rewriting, i.e. links will only carry those URL Marks that are explicitly set, either by FIT internally or by the site.

Setting URL Marks

Use ai-mark attributes to add URL Marks to the links of a given element.

Reading URL Marks

The URL Marks from the request currently being processed can be read from the FIDJ URI fit://request/urlMarks which contains a simple DOM:

<urlMarks>
  <param name="foo">bar</param>
  <param name="s">OOhxlIT2iMvQD8KRlxIu4Q10</param>
</urlMarks>

You can use the information encoded in the URL Marks e.g. in Adaptation Instructions or Flow decisions.

Example:

<flow>
  <default-request />
  <parse />
  <if test="contains(request/url, 'index.html')">
    <choose>
      <when test="fit-document('fit://request/urlMarks')/urlMarks/param[@name='rewriteTrue']">
        <redirect xpath="string(fit-document('fit://request/content/main')//a[1]/@href)" />
      </when>
      <otherwise>
        <redirect xpath="string(fit-document('fit://request/content/main')//a[1]/@href)" rewrite="false" />
      </otherwise>
    </choose>
  </if>
</flow>

Example using URL Marks with Adaptation Instructions:

<html>
  <head />
  <body>
    <ai-choose>
      <ai-when test="fit-document('fit://request/urlMarks')/urlMarks/param[@name = 'foo']"><ai-value-of select="fit-document('fit://request/urlMarks')/urlMarks/param[@name = 'foo']" />
      </ai-when>
    </ai-choose>
  </body>
</html>

Reserved URL Marks

Mark Description Values
d see Debugging see Debugging
m process specific types of non-DOM content js, css, is, ic, font
pass Pass mode. Passes requested objects without being processed by FIT.  
e Encoding utf-8, utf-16, ISO-8859-1, etc.
lm Cache buster mark, used to make resources long cacheable. Responses compare their mark’s value with the Last-Modified header to determine whether the data was not changed. If so, Cache-Control: max-age=31536000 is sent, otherwise caching will be prohibited with Cache-Control: private, max-age=0, s-maxage=0, no-cache, no-store, must-revalidate. UNIX timestamps
ucm Unified caching mark.  
ppl If Partial Page Loading request was used  
pplprid* Contains the PPL provides attribute data.  
cookieEnabled set to 0 if the Client does not support cookies  
fitScript set to 0 if the Client has insufficient JavaScript support  
apfail set if Active Properties detection has failed  
minify set if JavaScript or CSS Minifying should be enabled  
nominify set if JavaScript or CSS Minifying should be disabled  
tff The target font format used in Webfont Compression, if the target font format is not WOFF2 woff
cssconcat used for CSS Concat requests comma separated list of url encoded stylesheet urls
ch used for CSS Concat requests hash of style content
asset handle for requested asset ap, ppl, delayedElements, etc.
tf set if text filter should be applied on asset empty
jsl used for Script Manager requests empty
fdx set if FDX data is transferred empty or noscript
local identifies a local FIDJ resource and its type extension, site, project, assets, local

And there are some special Image Scaling URL Marks:

Mark Description
f Output format
F Alternative Format
q Quality
pass Pass mode. Passes requested objects without being processed by FIT.
bc Background color
c Number of colors
w Width
h Height
mw Max width
mh Max height
nocache Set No-cache header.
i Interlaced
n New file extension was added
webp Client supports WebP images.
zorro Client supports ZorroSVG.

Deprecated URL Marks

Mark Description Values
acs was used for concatenating external style requests from Adaptive Components comma-separated list of AC ids