godot导出html5,打开提示加载wasm文件失败的解决方法

# 解决方法

临时治标

问题的原因是跨域请求,线下临时测试使用可以用这种方法,步骤如下:

  1. firefox浏览器地址栏输入“about:config”.
  2. 将“privacy.file_unique_origin”更改为“false”(默认是“ture”)

治本

如果是线上web使用,应该查找产生跨域的原因,确认页面的url是否正确。


2022年2月,补充说明 什么是跨域? 请求的url与当前页面的url的协议域名端口有任一不同,即视为跨域。


事情经过

这几天在用godot尝试搞游戏。 在按教程做完“第一个游戏”之后,将其导出html5的,打开该html文件发现报错了。提示“xxxxx.wasm”加载失败。 于是百度了一下后,在贴吧里看到的解决方案就是要用开http服务(web服务),用http的方式去浏览。 在尝试的过程中,我发现,在deepin系统之下,用Firefox打开该文件直接可以运行,Chromium则不可以。 于是我又切换到win7系统尝试了一遍。这次用“360极速”(基于chromium内核)和Firefox,两个都报加载错误。 迷惑之下,我按F12打开调试工具。Firefox的控制台明确的告知了问题所在。“已拦截跨源请求:同源策略禁止读取位于 file:///****/test.wasm 的远程资源。(原因:CORS 请求不是 http)。”并且后面有 [详细了解] 的连接。我点进去看了,才知道问题出在安全性问题上,浏览器是默认禁止跨域的。 解决方法Firefox也有给出来,Firefox在地址栏中输入“about:config”,然后将“privacy.file_unique_origin”更改为“false”(默认是“ture”),这次再用Firefox打开html文件就可以正常加载wasm文件了。既然是跨域问题,那么正常放在网站上,应当是不会出现这个载入错误的。最后安全起见。运行完后,建议再将设置改回“true”。