<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sanity on CSP Guide</title>
    <link>https://csp-guide.com/tags/sanity/</link>
    <description>Recent content in Sanity on CSP Guide</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 29 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://csp-guide.com/tags/sanity/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CSP for Sanity.io and Headless Content</title>
      <link>https://csp-guide.com/posts/csp-for-sanity-io-and-headless-content/</link>
      <pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate>
      
      <guid>https://csp-guide.com/posts/csp-for-sanity-io-and-headless-content/</guid>
      
      <description>&lt;p&gt;If you use Sanity.io as a headless CMS, your CSP usually breaks in the same places:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sanity image CDN&lt;/li&gt;
&lt;li&gt;Sanity API requests&lt;/li&gt;
&lt;li&gt;live preview or draft content&lt;/li&gt;
&lt;li&gt;embedded content coming from editors&lt;/li&gt;
&lt;li&gt;Studio hosting on a separate origin&lt;/li&gt;
&lt;li&gt;frontend frameworks that sneak in inline scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’ve had to fix this more than once, and the main trap is assuming “headless” means your CSP can stay simple. It rarely does. Content comes from one place, images from another, previews from another, and editors eventually paste in a YouTube embed that blows up your policy.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
