diff --git a/.changeset/strange-rocks-return.md b/.changeset/strange-rocks-return.md new file mode 100644 index 0000000000000..4d90920f83f56 --- /dev/null +++ b/.changeset/strange-rocks-return.md @@ -0,0 +1,5 @@ +--- +'@astrojs/rss': patch +--- + +use standard rss content type diff --git a/packages/astro-rss/src/index.ts b/packages/astro-rss/src/index.ts index 33a8f66a02613..b7e447d8b8050 100644 --- a/packages/astro-rss/src/index.ts +++ b/packages/astro-rss/src/index.ts @@ -28,6 +28,10 @@ export type RSSOptions = { /** Specify custom data in opening of file */ customData?: z.infer['customData']; trailingSlash?: z.infer['trailingSlash']; + /** + * Specify the response charset. default is utf-8 + */ + charset?: z.infer['charset']; }; export type RSSFeedItem = { @@ -83,13 +87,14 @@ const rssOptionsValidator = z.object({ stylesheet: z.union([z.string(), z.boolean()]).optional(), customData: z.string().optional(), trailingSlash: z.boolean().default(true), + charset: z.string().optional().default('utf-8') }); -export default async function getRssResponse(rssOptions: RSSOptions): Promise { +export default async function getRssResponse({charset, ...rssOptions}: RSSOptions): Promise { const rssString = await getRssString(rssOptions); return new Response(rssString, { headers: { - 'Content-Type': 'application/xml', + 'Content-Type': `application/rss+xml; charset=${charset}`, }, }); }