WebGL网络数据跨域问题
历史文章目录连接: https://blog.csdn.net/yy763496668/article/details/113117040 此链接为CSDN连接,目的为方便大家一览博客目录!内容会定期更新。 |
概述:
解决WebGL跨域问题 |
正文:
简单吐槽一下,用我们公司模型王哥的话说,Unity就是垃圾。自从接触了WebGL之后,我慢慢接受了王哥的观点。
WebGL中的坑是很多。比如在WebGL中进行网络通讯是一个很惊喜的行为,你又可能跑完所有功能后,在你发布成WebGL之后,发现不能使用。是不是很刺激。
由于安全性的影响,JavaScript代码没有直接访问IP套接字来实现网络连接。因此,该.NET网络类(System.Net命名空间中的一切,特别是System.Net.Sockets)在WebGL中不能工作。UnityEngine.Network* 类也是这样,编译WebGL时将找不到这些类。如果你需要在WebGL使用网络通信,你现在可以选择使用unity的WWW 或UnityWebRequest 类或则支持webGL的新的Unity 网络通信特性。或在JavaScript中使用WebSockets或WebRTC实现你自己的网络通信。
解决了以上问题之后,你还会发现如下问题。
先回顾原因:
项目是一个弱联网项目,使用HTTP的Get和Post请求。接口由服务器提供。在开发过程中,只要接口对接没有问题,基本上不会碰到问题。但是,在开发之后的测试中,我们不可能(说不可能,是因为麻烦,如果不怕麻烦,其实也是可能的)每次都将项目打包完都在同一个域(webGL运行的IP与Port和请求服务器数据的ip和port 完全相同我们称之为同一个域,否则是跨域访问)中进行测试,那么就会出现下列问题。
为了在测试的时候能够实现跨域访问。(使用谷歌浏览器)
我们需要做一下操作。
打开doc窗口
快捷键 win+r
进入谷歌的安装目录。
谷歌安装目录默认如下
C:\Users\用户\AppData\Local\Google\Chrome\Application
这里的用户以自己当前的用户保持一致
cd 谷歌安装目录
执行以下命令
chrome.exe --user-data-dir="c:\demoDir" --test-type --disable-web-security
以上的操作是便于开发调试,如果是部署到服务器,要保证webGL工程和服务器在同一个域中
【关注、点赞,收藏】 |