Basicamente, digamos que você tenha vários cabeçalhos de link em sua resposta:
Link: <http://example.org/.meta>; rel=meta, <http://example.org/.acl>; rel=acl
Tudo o que você precisa fazer agora é passá-los ao analisador assim:
var r = parseLinkHeader(xhr.getResponseHeader('Link'));
Então, com base no tipo rel no qual você está interessado, você apenas obtém o valor href:
r['acl']['href'] -- outputs http://example.org/.acl
Fonte da essência aqui
// Unquote string (utility)
function unquote(value) {
if (value.charAt(0) == '"' && value.charAt(value.length - 1) == '"') return value.substring(1, value.length - 1);
return value;
}
// Parse a Link header
function parseLinkHeader(header) {
var linkexp = /<[^>]*>s*(s*;s*[^()<>@,;:"/[]?={} t]+=(([^()<>@,;:"/[]?={} t]+)|("[^"]*")))*(,|$)/g;
var paramexp = /[^()<>@,;:"/[]?={} t]+=(([^()<>@,;:"/[]?={} t]+)|("[^"]*"))/g;
var matches = header.match(linkexp);
var rels = new Object();
for (i = 0; i < matches.length; i++) {
var split = matches[i].split('>');
var href = split[0].substring(1);
var ps = split[1];
var link = new Object();
link.href = href;
var s = ps.match(paramexp);
for (j = 0; j < s.length; j++) {
var p = s[j];
var paramsplit = p.split('=');
var name = paramsplit[0];
link[name] = unquote(paramsplit[1]);
}
if (link.rel != undefined) {
rels[link.rel] = link;
}
}
return rels;
}