vlambda博客
学习文章列表

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 完全相同我们称之为同一个域,否则是跨域访问)中进行测试,那么就会出现下列问题。

为了在测试的时候能够实现跨域访问。(使用谷歌浏览器)

我们需要做一下操作。


  1. 打开doc窗口

    快捷键 win+r


  2. 进入谷歌的安装目录。

    谷歌安装目录默认如下

    C:\Users\用户\AppData\Local\Google\Chrome\Application

    这里的用户以自己当前的用户保持一致

    cd 谷歌安装目录

  3. 执行以下命令

    chrome.exe --user-data-dir="c:\demoDir" --test-type --disable-web-security



以上的操作是便于开发调试,如果是部署到服务器,要保证webGL工程和服务器在同一个域中




【关注、点赞,收藏】