Content-Security-Policy 使 Tensorflow.js 的 WASM 后端工作(Chrome 91.0.4472.77,macOS 11.3.1)

Content-Security-Policy to make Tensorflow.js's WASM backend work (Chrome 91.0.4472.77, macOS 11.3.1)

最新 Chrome 更新在使用 Tensorflow.js 时破坏了 WASM 后端。显然,浏览器现在执行更严格的 Content-Security-Policy headers。

错误要点(来自控制台):

"Initialization of backend wasm failed"

"Error: Failed to construct 'Worker': Access to the script at 'blob:https://fiddle.jshell.net/c95fbade-77fe-4945-a4dc-25a3a19f97d6' is denied by the document's Content Security Policy.

想知道是否有人找到了 运行 的方法?

Browser/OS - Chrome 91.0.4472.77 / macOS Big Sur 11.3.1

要检查错误,请转到此处 - https://jsfiddle.net/alex_oliynyk/2b6oa4dm/14/

干杯!

我的问题在 Tensorflow.js 回购中得到了 answered。我会在这里重新发布解决方案,以防有人遇到同样的问题。

  1. CSP headers 帮助:
'Cross-Origin-Embedder-Policy': 'require-corp',
'Cross-Origin-Opener-Policy': 'same-origin',

仍然,在弄清楚 CSP headers Tensorflow.js 后仍然没有工作。抛出连接到 SIMD 的错误。

  1. 这似乎暂时解决了这个问题:
tf.ENV.set('WASM_HAS_SIMD_SUPPORT', false);
tf.ENV.set('WASM_HAS_MULTITHREAD_SUPPORT', false);

它会禁用 SIMD 支持并降低性能,因此我希望它能在未来的库版本中得到全面解决。

干杯,