Headers Method
The Headers method extracts feed URLs from HTTP Link headers per RFC 8288.
How It Works
Some servers advertise feeds via HTTP headers instead of (or in addition to) HTML:
HTTP/1.1 200 OK
Link: </feed.xml>; rel="alternate"; type="application/rss+xml"
Link: </atom.xml>; rel="alternate"; type="application/atom+xml"The Headers method parses these headers and extracts feed URLs.
Configuration
Feedscout comes with reasonable defaults, but you can customize how headers are parsed if needed.
Link Selectors
Control which Link headers are matched:
import { mimeTypes } from 'feedscout/feeds'
const feeds = await discoverFeeds(url, {
methods: {
headers: {
linkSelectors: [
{ rel: 'alternate', types: mimeTypes },
{ rel: 'feed' },
],
},
},
})Default Values
You can import the default Headers options:
import { defaultHeadersOptions } from 'feedscout/feeds'Or import individual pieces like linkSelectors:
import { linkSelectors } from 'feedscout/feeds'Using Directly
You can use the Headers discovery function directly:
import { discoverUrisFromHeaders } from 'feedscout/methods'
const uris = discoverUrisFromHeaders(headers, {
baseUrl: 'https://example.com',
linkSelectors: [{ rel: 'alternate', types: ['application/rss+xml'] }],
})
// ['/feed.xml']URIs come back as written in the Link header, so they can be relative. discoverFeeds resolves them against the page URL.
Providing Headers
When using discoverFeeds(), you can provide headers from an existing response:
const response = await fetch('https://example.com')
const feeds = await discoverFeeds(
{
url: 'https://example.com',
content: await response.text(),
headers: response.headers,
},
{ methods: ['html', 'headers'] },
)When to Use
The Headers method is useful when:
- The server doesn't include feed links in HTML.
- You want to check for feeds without parsing the full HTML.
- The feed URL is only advertised via headers.
Most websites use HTML <link> elements, so the Headers method is typically used as a secondary source.