内容安全策略对象源 blob

Content-Security-Policy object-src blob

使用内容安全策略时,我尝试使用 window.URL.createObjectURL 遵循 Chrome 41(测试版)中的流程,但出现如下错误:

Refused to load plugin data from 'blob:http%3A//localhost%3A7000/f59612b8-c760-43a4-98cd-fe2a44648393' because it violates the following Content Security Policy directive: "object-src blob://*"

使用限制 object-srcdefault-src 的内容安全策略,可以像这样重现问题(为方便起见使用 jQuery):

blob = new Blob(
   ["%PDF-1.\ntrailer<</Root<</Pages<</Kids[<</MediaBox[0 0 3 3]>>]>>>>>>"],
   { type: "application/pdf" })
$("<embed>").attr("src", window.URL.createObjectURL(blob))
  .appendTo(document.body)

the spec that this should work 看来,data://* 也是如此。我也试过 blobblob:blob:*blob:http*blob:http:*blob:http://*,但没有用。

有效但由于明显原因不受欢迎的是 object-src *

有没有人成功地让 blob 加载了内容安全策略?这是上游的问题,还是我忽略了什么?

符合规范的答案是 object-src 'self' blob:

blob: 应该只明确匹配 blob:,而不是 'self'*。这是 Chrome, and was recently fixed in Firefox 40.

中的错误