title: Chrome extension Refused to create a worker from blob
body: <p>I'm trying to develop a Chrome extension that provides translation of meeting audio using Microsoft speech translation api. So far I've been able to integrate the api into my content script and trigger the translation process. But I'm getting the following errors right after</p>
  <blockquote>
  <p>Refused to
  create a worker from
  'blob:<a href="https://meet.google.com/64dd2a91-68d8-4dad-a670-b2f60802b7b0%27" rel="nofollow noreferrer">https://meet.google.com/64dd2a91-68d8-4dad-a670-b2f60802b7b0'</a>
  because it violates the following Content Security Policy directive:
  &quot;worker-src 'self'&quot;.</p>
  <p>Refused to create a worker from
  'blob:<a href="https://meet.google.com/64dd2a91-68d8-4dad-a670-b2f60802b7b0%27" rel="nofollow noreferrer">https://meet.google.com/64dd2a91-68d8-4dad-a670-b2f60802b7b0'</a>
  because it violates the following Content Security Policy directive:
  &quot;script-src 'nonce-2I2d8Ck8M1aHt/5Ka0zUQQ' 'unsafe-eval' 'self'
  <a href="https://apis.google.com" rel="nofollow noreferrer">https://apis.google.com</a> <a href="https://ssl.gstatic.com" rel="nofollow noreferrer">https://ssl.gstatic.com</a> <a href="https://www.google.com" rel="nofollow noreferrer">https://www.google.com</a>
  <a href="https://www.gstatic.com" rel="nofollow noreferrer">https://www.gstatic.com</a> <a href="https://www.google-analytics.com" rel="nofollow noreferrer">https://www.google-analytics.com</a>
  <a href="https://youtube.googleapis.com" rel="nofollow noreferrer">https://youtube.googleapis.com</a> <a href="https://youtube.com" rel="nofollow noreferrer">https://youtube.com</a> <a href="https://s.ytimg.com" rel="nofollow noreferrer">https://s.ytimg.com</a>
  https://www.youtube.googleapis.com&quot;. Note that 'worker-src' was not
  explicitly set, so 'script-src' is used as a fallback.</p>
  </blockquote>
  <p>Following is my manifest file..</p>
  <pre><code>{
      &quot;name&quot; : &quot;Meeting Translator&quot;,
      &quot;description&quot; : &quot;Real time audio to text translation&quot;,
      &quot;version&quot; : &quot;0.0.1&quot;,
      &quot;manifest_version&quot; : 2,
      &quot;browser_action&quot; : {
          &quot;default_popup&quot; : &quot;popup.html&quot;,
          &quot;default_icon&quot;: {
              ...
          }
      },
      &quot;icons&quot; : {
          ...
      },
      &quot;background&quot; : {
          &quot;scripts&quot; : [&quot;background.js&quot;],
          &quot;persistent&quot; : false
      },
      &quot;content_scripts&quot; : [
          {
              &quot;matches&quot; : [&quot;https://meet.google.com/*&quot;,&quot;http://meet.google.com/*&quot;],
              &quot;js&quot; : [
                  &quot;js/microsoft.cognitiveservices.speech.sdk.bundle.js&quot;,
                  &quot;js/socket.io.min.js&quot;,
                  &quot;js/content.js&quot;
              ]
          }
      ],
      &quot;permissions&quot; : [&quot;tabs&quot;,&quot;contentSettings&quot;, &quot;storage&quot;, &quot;pageCapture&quot;],
      &quot;content_security_policy&quot; : &quot;script-src 'self'; script-src-elem 'self' data: blob:; worker-src 'self' data: blob:; object-src 'self'&quot;
  
  }
  </code></pre>
  <p>This is my first try in extension building. Any help is much appreciated.</p>
  <p>ps: if anyone can please explain or refer easy material to understand CSP better.</p>