WebAssembly.Instance is disallowed on the main thread, if the buffer size is larger than 4KB. Use WebAssembly.instantiate.
解决方法:未解决
跨域方法:https://www.cnblogs.com/fundebug/p/10329202.html
CROS跨域常用header
Access-Control-Allow-Origin: 允许哪些ip或域名可以跨域访问 *允许全部
Access-Control-Max-Age: 表示在多少秒之内不需要重复校验该请求的跨域访问权限
Access-Control-Allow-Methods: 表示允许跨域请求的HTTP方法,如:GET、POST、PUT、DELETE
Access-Control-Allow-Headers: 表示访问请求中允许携带哪些Header信息,如:Accept、Accept-Language、Content-Language、Content-Type
普通<script>标签是可以加载跨域脚本的,参考:https://www.jianshu.com/p/a45c9d089c93
//错误二,SharedArrayBuffer未定义
Uncaught ReferenceError: SharedArrayBuffer is not defined
解决方法:
1.响应 COOP 和 COEP 头部
配置跨域隔离
//需要设置两个标题来跨源隔离您的站点:
参考资源: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
//
cross-origin-resource-policy:cross-origin
复制代码
优点:支持 Chrome,Firefox 等大部分浏览器,属于目前的长期解决方案。
缺点:影响窗口/iframe 回调型应用(第三方登录、付款等),影响 script 标签加载跨域资源。
2.SharedArrayBuffer 降级 ArrayBuffer
//if(!(crossOriginIsolated in window))
if(!crossOriginIsolated) {
SharedArrayBuffer = ArrayBuffer;
}
优点:简单粗暴
缺点:可能影响功能
WebAssembly碰到的问题及解决方案; WebAssembly如果缓冲区大小大于4KB,则不允许在主线程上使用。使用WebAssembly.instantiate。
于 2022-04-28 14:06:05 首次发布